今天边肖给大家分享一个易语言HOOKAPI的钩子操作代码的例子。边肖觉得内容挺好的,现在分享给大家,很有参考价值。有需要的朋友一起看看吧。
DLL代码。版本2。用于修改虚拟保护DLL命令,integer,' kernel32 ',' VirtualProtect ',修改虚拟保护。参数lpAddress,整数
参数dwSize,整数类型。参数flNewProtect,整数类型。参数lpflOldProtect,整数,地址
的。DLL命令将函数地址作为整数,' kernel32 ',' GetProcAddress ',并返回函数地址。
参数模块句柄,整数类型。参数函数名,文本类型
的。DLL命令接受模块句柄,整数类型,“kernel32”,“GetModuleHandleA”,并获取应用程序或动态链接库的模块句柄。如果执行成功,将返回模块句柄。零表示失败。GetLastError已设置。参数模块名称,文本类型,指定模块名称,通常与模块的文件名相同。比如NOTEPAD.EXE程序的模块文件名叫记事本;用于生成消息框的DLL命令,整数类型,' user32 ',' MessageBoxA ',用于生成消息框窗体。参数窗口句柄,整数。参数lpText,文本类型。参数lpCaption,文本类型。参数wType,整数类型
自定义数据类型。版本2。数据类型内存状态。成员dwLength,整数类型。成员dwMemoryLoad,整数类型。成员dwTotalPhys,整数类型。成员dwAvailPhys,整数类型。成员dwTotalPageFile,整数类型。成员dwAvailPageFile,整数类型。成员dwTotalVirtual,整数类型。成员dwAvailVirtual,整数类型
HOOKAPI钩子操作代码。版本2。装配窗总成1。程序集变量挂钩地址,整数。汇编变量原始数据,字节集。程序集变量OldProtect,整数类型。子程序按钮3被点击。
信息框(“这是一个测试本地钩子”,0,“如果被钩住了,这个文字会变!”)。子程序_按钮1_被点击。局部变量值,字节集
钩子地址=取函数地址(取模块句柄(" User32.dll ")," MessageBoxa ")。如果为真(挂钩地址=0)
信息框("无法获取函数地址!", 0, )
Return()
如果真的结束了
修改虚拟保护(挂钩地址,8,64,OldProtect)
原始数据=指向字节集的指针(钩子地址,8)
值={184}
写入内存(值+消息框a+{255,224},挂钩地址,8)。子程序MessageBoxA,整数类型。参数hWnd,整数,窗口句柄。参数lpText,文本类型,提示文本。参数lpCaption,文本类型,信息标题。参数uType,integer,按钮类型。局部变量值,字节集
LP text=LP text+"-LP text-挂接成功!"
LP caption=LP caption+"-LP caption-成功挂钩!"。如果为真(取字节集长度(原始数据)> 0)
写入内存(原始数据、挂钩地址等)
如果真的结束了
建立消息框(hWnd,lpText,lpCaption,uType)
值={184}
写入内存(值+消息框a+{255,224},挂钩地址,8)
返回(0)。子程序_按钮2_被点击。如果为真(取字节集长度(原始数据)> 0)
写入内存(原始数据、挂钩地址等)
如果真的结束了
运行结果:
总结
这就是本文的全部内容。希望这篇文章的内容对你的学习或工作有一定的参考价值。谢谢你的支持。如果你想了解更多,请查看下面的相关链接。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。