admin 管理员组文章数量: 887192
2024年1月28日发(作者:java设计模式没有用)
易语言HookAPI 技巧
易语言Hook的代码有很多,Hook的跳转代码也很简单,不多说,主要注意的有:
1. 可以保存原API函数的API头到自己申请的地址,Hook跳转的地址仍然是自己的子程序,但如果保存了API头,就可以 call addr 实现不恢复Hook调用原函数。
.版本 2
.如果真 (FuncAddress = 0 或 HookFuncAddr = 0)
返回 (0)
.如果真结束
hHook = VirtualAlloc (0, 14, 位或 (#MEM_COMMIT, #MEM_RESERVE),
#PAGE_EXECUTE_READWRITE)
.如果真 (hHook = 0)
返回 (0)
.如果真结束
RtlMoveMemory_1 (hHook, 到字节集 (FuncAddress), 4)
JmpCode = hHook + 4
RtlMoveMemory (JmpCode, FuncAddress, 5)
RtlMoveMemory_1 (JmpCode + 5, { 233 } + 到字节集 (到整数 (FuncAddress + 5 -
JmpCode - 10)), 5)
VirtualProtect (FuncAddress, 5, #PAGE_EXECUTE_READWRITE, OldProtect)
RtlMoveMemory_1 (FuncAddress, { 233 } + 到字节集 (到整数 (HookFuncAddr -
FuncAddress - 5)), 5)
VirtualProtect (FuncAddress, 5, OldProtect, 0)
返回 (JmpCode)
2. Hook recv函数等的技巧,这类函数的特点是,某个参数是具有缓冲区性质的,并在函数调用完成后参数会直接传递数据,所以结合上面的代码,就可以这样了:
ret=Call(jmpcode,para1,)
这时候,再对参数para1等进行处理,才可以获得数据
3. Anti-Hook的躲避技巧,部分程序会有检测API头5字节,所以我们只需要在Hookaddr上面加上一段偏移(大于5)即可躲避。更深入地,如果检测的是整个API头,我们就需要深入API的调用过程,Hook核心函数或其他流程来躲避。由于校验所有API头hash值需要大量的CPU占用及时间,所以一般也只会对重点函数进行检测。
版权声明:本文标题:易语言HookAPI 技巧 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/free/1706440149h506334.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论