C开发教程外挂(2)

2019-01-26 18:29

public class KeyBoardHookStruct {

public int vkCode; public int scanCode; public int flags; public int time; public int dwExtraInfo; }

#region DllImport //设置钩子

[DllImport("user32.dll",

CharSet

=

CharSet.Auto,

CallingConvention = CallingConvention.StdCall)]

public static extern int SetWindowsHookEx(int idHook, HookProc lpfn, IntPtr hInstance, int threadId); [DllImport("user32.dll",

CharSet

=

CharSet.Auto,

CallingConvention = CallingConvention.StdCall)] //抽掉钩子

public static extern bool UnhookWindowsHookEx(int idHook); [DllImport("user32.dll",

CharSet

=

CharSet.Auto,

CallingConvention = CallingConvention.StdCall)] //调用下一个钩子

public static extern int CallNextHookEx(int idHook, int nCode, IntPtr

wParam, IntPtr lParam); //取得模块句柄

[DllImport("kernel32.dll",

CharSet

=

CharSet.Auto,

CallingConvention = CallingConvention.StdCall)]

private static extern IntPtr GetModuleHandle(string lpModuleName);

//寻找目标进程窗口

[DllImport("USER32.DLL")]

public static extern IntPtr FindWindow(string lpClassName, string lpWindowName); //设置进程窗口到最前

[DllImport("USER32.DLL")]

public static extern bool SetForegroundWindow(IntPtr hWnd); //模拟键盘事件

[DllImport("User32.dll")]

public static extern void keybd_event(Byte bVk, Byte bScan, Int32 dwFlags, Int32 dwExtraInfo);

//释放按键的常量

private const int KEYEVENTF_KEYUP =2;

本例所使用

的函数比较少,它们都在系统的USER32.dll里,包括:设置和取消钩子、调用下一个钩子、导入进程、模拟键盘等等。我们依次导入它们。

这些函数的命名规范合理,几乎只根据函数名就能知道其功能。

如果读者对于其中的某些函数不熟悉,请自行搜索MSDN。 二、使用Windows API设置钩子

有了以上windows API函数的声明,下一步就是设置钩子了。

寥寥两行代码,但包含了相当丰富的内容。 C#代码 1.//委托

2.public delegate int HookProc(int nCode, IntPtr wParam, IntPtr lParam);

3. 4. 5.

6.public void Hook_Start() 7. {

8. // 安装键盘钩子 9. if (hHook == 0) 10. {

11. KeyBoardHookProcedure = new HookProc(KeyBoardHookProc); 12.

13. hHook = SetWindowsHookEx(WH_KEYBOARD_LL, KeyBoardHookProcedure,

GetModuleHandle(Process.GetCurrentProcess().MainModule.ModuleName), 0);

14. 15. } 16. } //委托

public delegate int HookProc(int nCode, IntPtr wParam, IntPtr lParam);

public void Hook_Start() {

// 安装键盘钩子 if (hHook == 0) {

KeyBoardHookProcedure = new HookProc(KeyBoardHookProc); hHook

=

SetWindowsHookEx(WH_KEYBOARD_LL,

KeyBoardHookProcedure,

GetModuleHandle(Process.GetCurrentProcess().MainModule.ModuleName), 0); } }

先介绍一下设置钩子的明星函数:SetWindowsHookEx 。它的参数说明如下。SetWindowsHookEx( idHook: Integer; {钩子类型} lpfn: TFNHookProc; {函数指针}

hmod: HINST; {包含钩子函数的模块(EXE、DLL)句柄; 一般是 HInstance; 如果是当前线程这里可以是 0}

dwThreadId: DWORD {关联的线程; 可用 GetCurrentThreadId 获取


C开发教程外挂(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:广东省梅山重点中学2012届高三政治一轮复习《经济生活》第六课测

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: