这篇文章给大家介绍怎么在易语言中使用HOOK注入获取内容,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
DLL命令表
.版本 2 .DLL命令 RtlMoveMemory, 整数型, "kernel32.dll", "RtlMoveMemory" .参数 Destination, 整数型 .参数 Source, 整数型 .参数 Length, 整数型 .DLL命令 CreateWindowExA, 整数型 .参数 dwExStyle, 整数型 .参数 lpClassName, 文本型 .参数 lpWindowName, 文本型 .参数 dwStyle, 整数型 .参数 x, 整数型 .参数 y, 整数型 .参数 nWidth, 整数型 .参数 nHeight, 整数型 .参数 hWndParent, 整数型 .参数 hMenu, 整数型 .参数 hInstance, 整数型 .参数 lpParam, 整数型 .DLL命令 VirtualProtect, 逻辑型 .参数 lpAddress, 整数型 .参数 dwSize, 整数型 .参数 flNewProtect, 整数型 .参数 lpflOldProtect, 整数型, 传址 .DLL命令 SetWindowLongA, 整数型, , "SetWindowLongA" .参数 hWnd, 整数型 .参数 nIndex, 整数型 .参数 dwNewLong, 整数型 .DLL命令 CallWindowProcA, 整数型, , "CallWindowProcA" .参数 lpPrevWndFunc, 整数型 .参数 hWnd, 整数型 .参数 Msg, 整数型 .参数 wParam, 整数型 .参数 lParam, 整数型 .DLL命令 GetProcAddress, 整数型 .参数 hModule, 整数型 .参数 lpProcName, 文本型 .DLL命令 GetModuleHandleA, 整数型 .参数 lpModuleName, 文本型 .DLL命令 MessageBoxA, 整数型, "user32.dll", "MessageBoxA", 公开, 显示和操作一个消息框。该消息框包含一个应用程序定义的消息和标题,加上预定义的图标和按钮的任意组合。 wLanguageId参数指定为预定义的按钮使用的语言资源集。 .参数 hwnd, 整数型, , 要创建的消息框的所有者窗口的句柄。如果这个参数为NULL,则消息框没有所有者窗口 .参数 lpText, 文本型 .参数 lpCaption, 文本型 .参数 wtype, 整数型 .DLL命令 SetWindowsHookExA, 整数型, "User32.dll", "SetWindowsHookExA", 公开, HHOOK WINAPI SetWindowsHookEx .参数 idHook, , , _In_ int idHook, .参数 lpfn, , , _In_ HOOKPROC lpfn, .参数 hMod, , , _In_ HINSTANCE hMod, .参数 dwThreadId, , , _In_ DWORD dwThreadId .DLL命令 GetCurrentThreadId, 整数型, "kernel32.dll", "GetCurrentThreadId", 公开, 取当前线程ID .DLL命令 CallNextHookEx, 整数型, "User32.dll", "CallNextHookEx", 公开, LRESULT WINAPI CallNextHookEx .参数 hhk, 整数型, , _In_opt_ HHOOK hhk, .参数 nCode, 整数型, , _In_ int nCode, .参数 wParam, 整数型, , _In_ WPARAM wParam, .参数 lParam, 整数型, , _In_ LPARAM lParam .DLL命令 GetForegroundWindow, 整数型, "User32.dll", "GetForegroundWindow", 公开, HWND WINAPI GetForegroundWindow .DLL命令 UnhookWindowsHookEx, 逻辑型, "User32.dll", "UnhookWindowsHookEx", 公开, BOOL WINAPI UnhookWindowsHookEx .参数 hhk, , , _In_ HHOOK hhk
常量数据表
.版本 2 .常量 GWL_WNDPROC, "-4" .常量 PAGE_EXECUTE_READWRITE, "64" .常量 WM_NOTIFY, "78" .常量 WH_CBT, "5" .常量 HCBT_ACTIVATE, "5"
全局变量表
.版本 2 .全局变量 APIHook, APIHOOK类
APIHOOK获取信息框内容
.版本 2 .程序集 APIHOOK类 .程序集变量 pFunAddress, 整数型 .程序集变量 OldProtect, 整数型 .程序集变量 NewData, 字节集 .程序集变量 OldData, 字节集 .程序集变量 HookInfo, 文本型 .子程序 _初始化, , , 当基于本类的对象被创建后,此方法会被自动调用 .子程序 _销毁, , , 当基于本类的对象被销毁前,此方法会被自动调用 .子程序 InstallApiHook, 逻辑型, 公开 .参数 lpLibFileName, 文本型 .参数 lpProcName, 文本型 .参数 lpfn, 整数型 pFunAddress = GetProcAddress (GetModuleHandleA (lpLibFileName), lpProcName) ' 获取API函数地址 .如果真 (pFunAddress = 0) 返回 (假) .如果真结束 VirtualProtect (pFunAddress, 8, #PAGE_EXECUTE_READWRITE, OldProtect) ' 把内存块设置为可读写 NewData = { 184 } + 到字节集 (lpfn) + { 255, 224 } ' 生成新机器码数据 OldData = 指针到字节集 (pFunAddress, 8) ' 保存旧机器码数据 HookInfo = lpLibFileName + “|” + lpProcName 返回 (真) .子程序 BeginHook, , 公开 .如果真 (pFunAddress ≠ 0) 写到内存 (NewData, pFunAddress, 8) .如果真结束 .子程序 StopHook, , 公开 .如果真 (pFunAddress ≠ 0) 写到内存 (OldData, pFunAddress, 8) .如果真结束 .子程序 UninstallApiHook, , 公开 .局部变量 temp, 整数型 .如果真 (pFunAddress ≠ 0) 写到内存 (OldData, pFunAddress, 8) VirtualProtect (pFunAddress, 8, OldProtect, temp) .如果真结束 连续赋值 (0, pFunAddress, OldProtect) 连续赋值 ({ }, NewData, OldData) 连续赋值 (“”, HookInfo) .子程序 GetApiHookInfo, 文本型, 公开 返回 (HookInfo)
启动窗口程序集
.版本 2 .程序集 窗口程序集_启动窗口 .程序集变量 hhk, 整数型 .子程序 __启动窗口_创建完毕 APIHook.InstallApiHook (“user32.dll”, “MessageBoxA”, 到数值 (&MyMessageBox)) ' 安装APIHOOK APIHook.BeginHook () 信息框 (“你好”, 0, ) 信息框 (“你好”, 0, ) 结束 () .子程序 __启动窗口_将被销毁 APIHook.UninstallApiHook () .子程序 Proc, 整数型 .参数 nCode, 整数型 .参数 wParam, 整数型 .参数 lParam, 整数型 .判断开始 (nCode = #HCBT_ACTIVATE) 输出调试文本 (“信息框的句柄:” + 到文本 (wParam)) UnhookWindowsHookEx (hhk) .默认 .判断结束 CallNextHookEx (hhk, nCode, wParam, lParam) 返回 (0) .子程序 MyMessageBox, 整数型 .参数 hwnd, 整数型 .参数 lpText, 文本型 .参数 lpCaption, 文本型 .参数 wtype, 整数型 .局部变量 ret, 整数型 输出调试文本 (“=============”) 输出调试文本 (hwnd, lpText, lpCaption, wtype) 输出调试文本 (“=============”) APIHook.StopHook () hhk = SetWindowsHookExA (#WH_CBT, 到整数 (&Proc), 0, GetCurrentThreadId ()) ret = MessageBoxA (hwnd, lpText, lpCaption, wtype) APIHook.BeginHook () 返回 (ret)
运行结果:
关于怎么在易语言中使用HOOK注入获取内容就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。