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

教程辅助截图

511遇见

获取系统进程

.版本 2
.支持库 eAPI
 
.子程序 获取系统进程
.局部变量 进程列表, 进程信息, , "0"
.局部变量 进程, 文本型
.局部变量 i
 
进程列表 = 取系统进程列表 ()
.计次循环首 (取数组成员数 (进程列表), i)
    进程 = 进程列表 [i].进程名称
    组合框1.加入项目 (进程, )
.计次循环尾 ()

消息钩子注入主程序

.版本 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, , )
    返回 (假)
.如果真结束
返回 (真)

整数_到子程序指针

.版本 2
 
.子程序 整数_到子程序指针, 子程序指针
.参数 int, 整数型
 
置入代码 ({ 139, 69, 8, 137, 236, 93, 194, 4, 0 })
' mov eax,[ebp+8] 把第一参数存入 EAX 用作返回
' mov  esp,ebp  平衡栈
' pop ebp  从栈里取出
' ret 4
 
返回 (整数_到子程序指针 (0))

注入按钮

.版本 2
 
.子程序 _按钮1_被单击, , , HOOK
 
消息钩子注入 (到数值 (编辑框1.内容), 编辑框2.内容, “hook”)

卸载注入

.版本 2
.子程序 _按钮2_被单击
UnhookWindowsHookEx (hhook)

教程获取下载:


发布日期:

所属分类: 易语言 标签: