这篇文章将为大家详细讲解有关易语言中HOOKAPI钩子操作的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
DLL代码
.版本 2 .DLL命令 修改虚拟保护, 整数型, "kernel32", "VirtualProtect", , 修改虚拟保护 .参数 lpAddress, 整数型 .参数 dwSize, 整数型 .参数 flNewProtect, 整数型 .参数 lpflOldProtect, 整数型, 传址 .DLL命令 取函数地址, 整数型, "kernel32", "GetProcAddress", , 返回函数地址 .参数 模块句柄, 整数型 .参数 函数名, 文本型 .DLL命令 取模块句柄, 整数型, "kernel32", "GetModuleHandleA", , 获取一个应用程序或动态链接库的模块句柄 如执行成功成功,则返回模块句柄。零表示失败。会设置GetLastError .参数 模块名, 文本型, , 指定模块名,这通常是与模块的文件名相同的一个名字。例如,NOTEPAD.EXE程序的模块文件名就叫作NOTEPAD; .DLL命令 建立消息框, 整数型, "user32", "MessageBoxA", , 建立消息框窗体 .参数 窗口句柄, 整数型 .参数 lpText, 文本型 .参数 lpCaption, 文本型 .参数 wType, 整数型
自定义数据类型
.版本 2 .数据类型 MEMORYSTATUS .成员 dwLength, 整数型 .成员 dwMemoryLoad, 整数型 .成员 dwTotalPhys, 整数型 .成员 dwAvailPhys, 整数型 .成员 dwTotalPageFile, 整数型 .成员 dwAvailPageFile, 整数型 .成员 dwTotalVirtual, 整数型 .成员 dwAvailVirtual, 整数型
HOOKAPI钩子操作代码
.版本 2 .程序集 窗口程序集1 .程序集变量 钩子地址, 整数型 .程序集变量 原始数据, 字节集 .程序集变量 OldProtect, 整数型 .子程序 _按钮3_被单击 信息框 (“这是一个测试本地HOOK”, 0, “如果挂钩了,本文本就会变化!”) .子程序 _按钮1_被单击 .局部变量 值, 字节集 钩子地址 = 取函数地址 (取模块句柄 (“User32.dll”), “MessageBoxA”) .如果真 (钩子地址 = 0) 信息框 (“无法获取函数地址!!!”, 0, ) 返回 () .如果真结束 修改虚拟保护 (钩子地址, 8, 64, OldProtect) 原始数据 = 指针到字节集 (钩子地址, 8) 值 = { 184 } 写到内存 (值 + 到字节集 (&MessageBoxA) + { 255, 224 }, 钩子地址, 8) .子程序 MessageBoxA, 整数型 .参数 hWnd, 整数型, , 窗口句柄 .参数 lpText, 文本型, , 提示文本 .参数 lpCaption, 文本型, , 信息标题 .参数 uType, 整数型, , 按钮类型 .局部变量 值, 字节集 lpText = lpText + “----lpText-----挂钩成功!” lpCaption = lpCaption + “-----lpCaption----挂钩成功!” .如果真 (取字节集长度 (原始数据) > 0) 写到内存 (原始数据, 钩子地址, ) .如果真结束 建立消息框 (hWnd, lpText, lpCaption, uType) 值 = { 184 } 写到内存 (值 + 到字节集 (&MessageBoxA) + { 255, 224 }, 钩子地址, 8) 返回 (0) .子程序 _按钮2_被单击 .如果真 (取字节集长度 (原始数据) > 0) 写到内存 (原始数据, 钩子地址, ) .如果真结束
运行结果:
关于“易语言中HOOKAPI钩子操作的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。