易语言HOOKAPI钩子操作代码实例

时间:2021-05-19

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) 写到内存 (原始数据, 钩子地址, ).如果真结束

运行结果:

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。如果你想了解更多相关内容请查看下面相关链接

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章