欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

[原创]无需偷代码的API HOOK

[原创]无需偷代码的API HOOK


hook api 实现的无非就是实现几种组合:
1:hook api执行自己的函数  +  执行原API + 恢复hook
2:hook api执行自己的函数  + 不执行原API + 恢复hook
3:hook api执行自己的函数  +  执行原API + 不恢复hook
4:hook api执行自己的函数  + 不执行原API + 不恢复hook
你想到的肯定是直接把hook api头部的5个byte偷到自己的函数里执行,这种方法的确可以 不过会有几个问题 ,假设api头部 2 条指令 4byte  3条指令 6byte  你只偷了5个字节的话肯定是不行的  得偷6个字节,
方法就是用反汇编引擎确定字节, 用户层还好毕竟不差那么点代码,驱动层就麻烦了,哪经得起这种奢侈,所以用反汇编引擎始终不是办法
我的解决方法
1:hook前保存hook函数的5个byte  //无论什么方法hook 这步肯定是必须的
2:修改要hook的api第一个byte为0e9就是far jmp 其实也可以修改成0e8h 不过需要用汇编  
3:修改后面4字节为offset  需要计算   自己函数地址-API地址-5
4:现在已经完成hook了 可以在自己函数里解决上面那几种方法了
4.1: hook api执行自己的函数  +  执行原API + 恢复hook?
在自己的函数里首先恢复hook api头部的5个字节
执行自己的代码
执行原api
4.2:hook api执行自己的函数  + 不执行原API + 恢复hook?
在自己的函数里首先恢复hook api头部的5个字节
执行自己的代码
4.3:hook api执行自己的函数  +  执行原API + 不恢复hook?
在自己的函数里首先恢复hook api头部的5个字节
执行自己的代码
执行原api
hook原api
4.4:hook api执行自己的函数  + 不执行原API + 不恢复hook?
在自己的函数里首先恢复hook api头部的5个字节
执行自己的代码
执行原api
hook原api
可能我的表达能力有点让人无奈,看不懂我说的话没关系看代码,我尽量写的简洁了,只为了表达一个思路

上传的附件 src.rar
bin.rar

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途。
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功