API Hook
来源:互联网 发布:vb控件加到窗体上 编辑:程序博客网 时间:2024/06/03 22:02
两种方法:
一、覆盖代码
1. 找到要拦截的函数地址
2. 保存起始的几个字节
3. 使用JUMP命令覆盖这几个字节,跳转到替代函数地址
4. 执行替代函数
5. 用第2步保存的字节恢复函数开始的几个字节
6. 正常调用被拦截函数
7. 再次循环2,3步调用替代函数
这种方法对于x86,x64,IA-64要分别编程,因为CPU JUMP指令不同。另外在抢占式的多线程环境中,不能工作,因为一个线程在覆盖地址时,另一个线程可能会调用同一个函数,导致灾难后果。
二、修改模块导入段(IAT表)
首先调用ImageDirectoryEntryToData,设置参数IMAGE_DIRECTORY_ENTRY获得导入段IMAGE_IMPORT_DESCRIPTOR
循环查找name属性是否和要hook的dll名称相同
如果相同,则获得其FirstThunk成员,循环查找成员的Function名称,如果是要hook的函数,则调用WriteProcessMemory替换为我们的函数
此方法需要对loadlibrary相关函数做处理,因为有可能hook后,程序又调用loadlibrary加载新dll,导致新dll中的没有被拦截
参考:windows核心编程
阅读全文
0 0
- API HOOK
- Hook API
- hook api
- hook api
- API HOOK
- Hook API
- API HOOK
- HOOK API
- API HOOK
- API Hook
- API Hook
- API Hook
- API HOOK
- hook api
- API HOOK
- HOOK API
- HOOK API
- API hook
- leetCode 84. Largest Rectangle in Histogram
- jquery设置checked及复选框 多个提交
- 【NOIP模板】 树状数组
- 【Spring in action】SpringMVC基于xml及java配置的简单运用
- 【安卓学习之常见问题】 apk崩溃,找不到so文件(dex file "couldn't find "libSDL.so)
- API Hook
- Java数据结构与算法之树_动力节点Java学院整理
- 常用的可视化数据展示工具有哪些
- Hdu 5405 Sometimes Naive 树链剖分+线段树
- 动态规划——最长公共子序列问题(LCS)
- Windows 7系统想要查看事件日志时候要如何查看
- Mac上搭建Xcode9.0+appium1.6.5过程及链接模拟器测试app
- jQuery 遍历
- curl 模拟表单发送