易语言HookAPI 技巧

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

易语言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,para2.etc)
这时候,再对参数para1等进行处理,才可以获得数据
3.Anti-Hook的躲避技巧,部分程序会有检测API头5字节,所以我们只需要在Hookaddr
上面加上一段偏移(大于5)即可躲避。

更深入地,如果检测的是整个API头,我们就需要深入API的调用过程,Hook核心函数或其他流程来躲避。

由于校验所有API头hash 值需要大量的CPU占用及时间,所以一般也只会对重点函数进行检测。

相关文档
最新文档