宝峰科技

 找回密码
 注册

QQ登录

只需一步,快速开始

智能终端设备维修查询系统注册会员邮箱认证须知!
查看: 3236|回复: 3

[推荐] C#做辅助的常用API

[复制链接]
  • TA的每日心情
    开心
    2024-12-9 18:45
  • 签到天数: 124 天

    [LV.7]常住居民III

    admin 发表于 2010-10-28 18:45:38 | 显示全部楼层 |阅读模式

    欢迎您注册加入!这里有您将更精采!

    您需要 登录 才可以下载或查看,没有账号?注册

    x

    1. using System;
    2. using System.Collections.Generic;
    3. using System.Text;
    4. using System.Runtime.InteropServices;  //这个肯定要的  

    5. namespace WindowsApplication1
    6. {
    7.     class win32API
    8.     {
    9.         public const int OPEN_PROCESS_ALL = 2035711;
    10.         public const int PAGE_READWRITE = 4;
    11.         public const int PROCESS_CREATE_THREAD = 2;
    12.         public const int PROCESS_HEAP_ENTRY_BUSY = 4;
    13.         public const int PROCESS_VM_OPERATION = 8;
    14.         public const int PROCESS_VM_READ = 256;
    15.         public const int PROCESS_VM_WRITE = 32;

    16.         private const int PAGE_EXECUTE_READWRITE = 0x4;
    17.         private const int MEM_COMMIT = 4096;
    18.         private const int MEM_RELEASE = 0x8000;
    19.         private const int MEM_DECOMMIT = 0x4000;
    20.         private const int PROCESS_ALL_ACCESS = 0x1F0FFF;

    21.         


    22.         //查找窗体
    23.         [DllImport("User32.dll", EntryPoint = "FindWindow")]
    24.         public extern static IntPtr FindWindow(
    25.             string lpClassName,
    26.             string lpWindowName
    27.             );

    28.         //得到目标进程句柄的函数
    29.         [DllImport("USER32.DLL")]
    30.         public extern static int GetWindowThreadProcessId(
    31.             int hwnd,
    32.             ref int lpdwProcessId
    33.             );
    34.         [DllImport("USER32.DLL")]
    35.         public extern static int GetWindowThreadProcessId(
    36.             IntPtr hwnd,
    37.             ref int lpdwProcessId
    38.             );

    39.         //打开进程
    40.         [DllImport("kernel32.dll")]
    41.         public extern static int OpenProcess(
    42.             int dwDesiredAccess,
    43.             int bInheritHandle,
    44.             int dwProcessId
    45.             );
    46.         [DllImport("kernel32.dll")]
    47.         public extern static IntPtr OpenProcess(
    48.             uint dwDesiredAccess,
    49.             int bInheritHandle,
    50.             uint dwProcessId
    51.             );
    52.         
    53.         //关闭句柄的函数
    54.         [DllImport("kernel32.dll", EntryPoint = "CloseHandle")]
    55.         public static extern int CloseHandle(
    56.             int hObject
    57.             );

    58.         //读内存
    59.         [DllImport("Kernel32.dll ")]
    60.         public static extern Int32 ReadProcessMemory(
    61.             IntPtr hProcess,
    62.             IntPtr lpBaseAddress,
    63.             [In, Out] byte[] buffer,
    64.             int size,
    65.             out IntPtr lpNumberOfBytesWritten
    66.             );
    67.         [DllImport("Kernel32.dll ")]
    68.         public static extern Int32 ReadProcessMemory(
    69.             int hProcess,
    70.             int lpBaseAddress,
    71.             ref int buffer,
    72.             //byte[] buffer,
    73.             int size,
    74.             int lpNumberOfBytesWritten
    75.             );
    76.         [DllImport("Kernel32.dll ")]
    77.         public static extern Int32 ReadProcessMemory(
    78.             int hProcess,
    79.             int lpBaseAddress,
    80.             byte[] buffer,
    81.             int size,
    82.             int lpNumberOfBytesWritten
    83.             );

    84.         //写内存
    85.         [DllImport("kernel32.dll")]
    86.         public static extern Int32 WriteProcessMemory(
    87.             IntPtr hProcess,
    88.             IntPtr lpBaseAddress,
    89.             [In, Out] byte[] buffer,
    90.             int size,
    91.             out IntPtr lpNumberOfBytesWritten
    92.             );

    93.         [DllImport("kernel32.dll")]
    94.         public static extern Int32 WriteProcessMemory(
    95.             int hProcess,
    96.             int lpBaseAddress,
    97.             byte[] buffer,
    98.             int size,
    99.             int lpNumberOfBytesWritten
    100.             );

    101.         //创建线程
    102.         [DllImport("kernel32", EntryPoint = "CreateRemoteThread")]
    103.         public static extern int CreateRemoteThread(
    104.             int hProcess,
    105.             int lpThreadAttributes,
    106.             int dwStackSize,
    107.             int lpStartAddress,
    108.             int lpParameter,
    109.             int dwCreationFlags,
    110.             ref int lpThreadId
    111.             );

    112.         //开辟指定进程的内存空间
    113.         [DllImport("Kernel32.dll")]
    114.         public static extern System.Int32 VirtualAllocEx(
    115.          System.IntPtr hProcess,
    116.          System.Int32 lpAddress,
    117.          System.Int32 dwSize,
    118.          System.Int16 flAllocationType,
    119.          System.Int16 flProtect
    120.          );

    121.         [DllImport("Kernel32.dll")]
    122.         public static extern System.Int32 VirtualAllocEx(
    123.         int hProcess,
    124.         int lpAddress,
    125.         int dwSize,
    126.         int flAllocationType,
    127.         int flProtect
    128.         );

    129.         //释放内存空间
    130.         [DllImport("Kernel32.dll")]
    131.         public static extern System.Int32 VirtualFreeEx(
    132.         int hProcess,
    133.         int lpAddress,
    134.         int dwSize,
    135.         int flAllocationType
    136.         );
    137.     }
    138. }
    复制代码

    该用户从未签到

    黑泡泡 发表于 2010-10-29 12:19:08 | 显示全部楼层
    顶起......


    补充模拟键盘API
    1. [DllImport("user32.dll", EntryPoint = "keybd_event")]
    2.         public static extern void keybd_event(
    3.             byte bVk,       //虚拟键值
    4.             byte bScan,     //硬件扫描码
    5.             int dwFlags,  //动作标识 这里是整数类型  0 为按下,2为释放
    6.             int dwExtraInfo  //与键盘动作关联的辅助信息 这里是整数类型 一般情况下设成为 0
    7.         );
    8.         //调用方法:
    9.         //    keybd_event((byte)Keys.LWin, 0, 0, 0);   //按下LWIN
    10.         //    keybd_event((byte)Keys.D, 0, 0, 0);         //按下D
    11.         //    keybd_event((byte)Keys.LWin, 0, 2, 0);   //释放LWIN
    12.         //    keybd_event((byte)Keys.D, 0, 2, 0);        //释放D
    复制代码

    该用户从未签到

    黑泡泡 发表于 2010-10-29 12:20:25 | 显示全部楼层
    再补充个发送消息的API
    可以后台发送
    1. [DllImport("user32.dll")]
    2.         private static extern bool SendMessage(
    3.             IntPtr hWnd,        //目标窗口句柄
    4.             int msg,            //消息
    5.             int wParam,         //附加的消息特定的信息
    6.             IntPtr lParam       //附加的消息特定的信息
    7.             );
    复制代码

    该用户从未签到

    a2331975 发表于 2010-10-29 20:50:35 | 显示全部楼层
    学习学习!!!~~~~~
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    免责声明

    本站中所有被研究的素材与信息全部来源于互联网,版权争议与本站无关。本站所发布的任何软件编程开发或软件的逆向分析文章、逆向分析视频、补丁、注册机和注册信息,仅限用于学习和研究软件安全的目的。全体用户必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。学习编程开发技术或逆向分析技术是为了更好的完善软件可能存在的不安全因素,提升软件安全意识。所以您如果喜欢某程序,请购买注册正版软件,获得正版优质服务!不得将上述内容私自传播、销售或者用于商业用途!否则,一切后果请用户自负!

    QQ|Archiver|手机版|小黑屋|联系我们|宝峰科技 ( 滇公网安备 53050202000040号 | 滇ICP备09007156号-2 )

    Copyright © 2001-2023 Discuz! Team. GMT+8, 2024-12-22 15:16 , File On Powered by Discuz! X3.49

    快速回复 返回顶部 返回列表