文章目录[隐藏]
安装钩子SetWindowsHookExA 当第一个参数是2时即为线程钩子,但我们必须通过GetCurrentThreadId ()先获取注入的线程ID,当参数是13时是全局键盘钩子。线程钩子只对指定的线程ID起作用,减少对系统资源的占有。
获取线程ID并注入
.版本 2 .支持库 spec .局部变量 线程ID, 整数型 线程ID = GetCurrentThreadId () 调试输出 (“线程ID: ” + 到文本 (线程ID)) ' 全局键盘钩子是13 ' 线程键盘钩子是2 键盘钩子 = SetWindowsHookExA (2, &键盘钩子回调函数, 0, 线程ID) 调试输出 (“键盘钩子: ” + 到文本 (键盘钩子))
键盘钩子回调函数
.版本 2 .支持库 spec .子程序 键盘钩子回调函数, 整数型 .参数 ncode, 整数型, , 消息代码 .参数 wParam, 整数型, , 虚拟键码 .参数 lParam, 整数型, , 按键状态 .' 如果真 (lParam > 0) .判断开始断 (wParam = 65) ' 返回 (1) .默认 .判断结束 .如果真结束 .' 如果真 (wParam ≥ 65 且 wParam ≤ 90) ' 返回 (1) .如果真结束 .如果真 (lParam > 0) 调试输出 (wParam) 加入成员 (text, wParam) .如果真结束 返回 (0)
卸载键盘钩子并写入文件
.版本 2 写到文件 (取运行目录 () + “\键盘记录.txt”, 到字节集 (text)) UnhookWindowsHookEx (键盘钩子)
用到的API
.版本 2 .DLL命令 SetWindowsHookExA, 整数型, , "SetWindowsHookExA", , 安装钩子,函数成功则返回钩子子程的句柄,失败返回NULL .参数 ihook, 整数型, , 钩子类型 .参数 lpfunc, 子程序指针, , 回调函数 .参数 hin, 整数型, , 实例句柄 .参数 threadid, 整数型, , 线程ID .DLL命令 UnhookWindowsHookEx, 逻辑型, "user32.dll", "UnhookWindowsHookEx", , 卸载钩子过程,函数成功则返回非0,失败返回NULL .参数 hhk, 整数型, , 安装钩子过程进得到的钩子句柄 .DLL命令 GetCurrentThreadId, 整数型, "kernel32.dll", "GetCurrentThreadId", , 获取当前线程一个唯一的线程标识符
提取码:加QQ群:521068947 群文件下载
资源教程交流①群:521068947