SetWindowsHookExA键盘线程钩子注入DLL到游戏-1

hook.dll源码

.版本 2
.支持库 EThread
 
.程序集 程序集1
.程序集变量 bg, 整数型
 
.子程序 _启动子程序, 整数型, , 请在本子程序中放置动态链接库初始化代码
 
bg = 0
 
_临时子程序 ()  ' 在初始化代码执行完毕后调用测试代码
返回 (0)  ' 返回值被忽略。
 
.子程序 _临时子程序
 
' 本名称子程序用作测试程序用,仅在开发及调试环境中有效,编译发布程序前将被系统自动清空,请将所有用作测试的临时代码放在本子程序中。 ***注意不要修改本子程序的名称、参数及返回值类型。
 
.子程序 hook, 整数型, 公开
.参数 nCode, 整数型
.参数 wParam, 整数型
.参数 lParam, 整数型
 
.如果 (bg = 0)
    启动线程 (&回调函数, , )
 
.否则
 
.如果结束
bg = 1
返回 (CallNextHookEx (0, nCode, wParam, lParam))
 
.子程序 回调函数
 
载入 (窗口1, , 真)

游戏控制我们采用了按键的简单示范

.版本 2
.支持库 eAPI
 
.计次循环首 (10, )
    模拟按键 (#F4, , )
    程序_延时 (1000, )
    模拟按键 (#F3, , )
    程序_延时 (1000, )
    模拟按键 (#F2, , )
    程序_延时 (1000, )
 
.计次循环尾 ()

消息钩子

.版本 2
 
.子程序 消息钩子注入, 逻辑型
.参数 进程ID, 整数型
.参数 注入DLL, 文本型
.参数 接口函数名称, 文本型
.局部变量 hMod, 整数型
.局部变量 procAdress, 整数型
.局部变量 handle, 整数型
.局部变量 dwThreadID, 整数型
 
' 1、 获取HOOKDLL的进程空间地址
hMod = LoadLibraryA (注入DLL)
.如果真 (hMod = 0)
    信息框 (“载入DLL失败!”, 0, , )
    返回 (假)
.如果真结束
' 2、获取HOOKDLL接口的地址
procAdress = GetProcAddress (GetModuleHandleA (注入DLL), 接口函数名称)
.如果真 (procAdress = 0)
    信息框 (“获取接口失败!”, 0, , )
    返回 ()
.如果真结束
' 3、获取要注入的进程的句柄
handle = 进程_ID取窗口句柄 (进程ID, , , , )
.如果真 (handle = 0)
    信息框 (“获取窗口进程失败”, 0, , )
    FreeLibrary (hMod)
    返回 (假)
.如果真结束
' 4、获取要注入的进程的主线程ID
dwThreadID = 窗口_句柄取线程ID (handle)
.如果真 (dwThreadID = 0)
    信息框 (“获取目标进程的线程ID失败”, 0, , )
    FreeLibrary (hMod)
    返回 ()
.如果真结束
' 5、开始安装键盘线程钩子
hhook = SetWindowsHookExA (2, 整数_到子程序指针 (procAdress), hMod, dwThreadID)
.如果真 (hhook = 0)
    信息框 (“安装钩子失败!”, 0, , )
    返回 (假)
.如果真结束
返回 (真)

教程下载:

链接:https://pan.baidu.com/s/158ikKVjIwaoF4438MG4fhA

提取码:加QQ群:521068947 群文件下载


发布日期:

所属分类: 易语言 标签: