IAT hook与inline hook的区别
IAT hook
导入表hook原理:修改导入表中某函数的地址到自己的补丁函数。IATHook
- 通过GetProcAddress获取目标函数地址
- 在程序内存中找到所在dll的导入表
- 查找目标函数地址保存的位置
- 把地址修改为自己补丁函数
问题:当该函数递归调用时,不会被hook
为解决这个问题,可以使用inline hook
inline hook
需要一个代理函数ProxyFunction,调用Function时候,会跳转到代理函数,代理函数执行的最后要执行一个与目标函数一样定义的执行函数OriginalFunnction,这个函数执行的shell code代码。`
//hook 函数Function
typedef HANDLE(WINAPI * PFunction)(_In_ LPCWSTR lpXXX, _In_ DWORD dwXXX);
__declspec(naked) void OriginalFunction()
{_asm{_emit 0x90;_emit 0x90;_emit 0x90;jmp NextInstructionAddress;//此地址存放真正的Function函数地址}
}
HANDLE WINAPI ProxyFuntion(_In_ LPCWSTR lpXXX, _In_ DWORD dwXXX)
{//excute your processOutputDebugStringW(L"ProxyFunnction");HANDLE ret = (pFunction)OriginalFunction(lpFileName,dwData);return ret;
}
定义了代理函数和执行函数之后,需要在主函数中建立整个钩子环路。具体原理如下:参见雪花论坛inline hook。
IAT hook与inline hook的区别相关推荐
- Windows内核API HOOK 之 Inline Hook
来源:CSDN 作者:daiwen 名字起得好,Inline hook,乍一听,似乎很高深.此处的Inline,我以为,意指将汇编代码直接写入内核API的内存区域.Inline Hook不像用户态 ...
- PLT hook与Inline hook
前言 在目前的安卓APP测试中对于Native Hook的需求越来越大,越来越多的APP开始逐渐使用NDK来开发核心或者敏感代码逻辑. 个人认为原因如下: 安全的考虑.各大APP越来越注重安全性,ND ...
- SSDT Hook的妙用-对抗ring0 inline hook
******************************************************* *标题:[原创]SSDT Hook的妙用-对抗ring0 inline hook * ...
- Inline Hook Syscall 详解
文章目录 1. hook一般syscall 2. hook stub syscall 2.1 stub_xxx 原理 2.2 方法1:hook `stub_xxx` 2.3 方法2:hook `cal ...
- Inline Hook
@author: dlive IAT Hook时如果要钩取的API不在IAT中(LoadLibrary后调用),则无法使用该技术.而Inline Hook不存在这个限制. 0x01 Inline Ho ...
- C语言playsoundw函数,使用inline hook实现修改PC微信通知铃声-哥哥微信来了
本帖最后由 bester 于 2020-2-15 01:20 编辑 原贴:https://www.52pojie.cn/thread-1103441-1-1.html 最近频繁刷某音刷到哥哥微信来了的 ...
- inline hook __usercall 函数
usercall 调用约定表示这个函数用寄存器传参,hook 它就没那么方便,需要整一个包装函数.原理是很简单的,下面给个例子,一看就懂: 说明一下我这里用的是 tramp hook 技术,或者叫&q ...
- C/C++:Windows编程—Inline Hook内联钩子(上)
前言 先介绍下Windows中的Hook技术.Hook是Windows中提供的一种用以替换DOS下"中断"的系统机制,中文译为"挂钩"或"钩子&quo ...
- HOOK 几种实现方式区别
Hook简介 微软的MSDN中,对Hook的解释为: A hook is a point in the system message-handling mechanism where an appli ...
最新文章
- 吴恩达老师深度学习视频课笔记:构建机器学习项目(机器学习策略)(1)
- shell脚本_查找无效网址
- 网络分析系统_MetagenoNets:在线宏基因组网络分析实操教程
- 【django】项目准备
- IOS之Swift的CoreData入门使用案例
- 前端学习(2968):完善登录页面
- 组态王bitset用法_关于STEP7在组态王里定义I/O离散变量
- logback日志pattern_Springboot整合log4j2日志全解
- 计算机科学中最重要的 32 个算法
- vc++中实现进度条
- 微星笔记本win键失灵了怎么解决
- 餐饮管理系统开发源码
- 中级职称考试 计算机 英语考试,中级职称工程师职称计算机考试需要考过哪些模块...
- 斗鱼 Juno 监控中心的设计与实现
- gbdt算法_双色球最简单的算法
- 修复win10右键卡死鼠标转圈
- 详细写出拆卸计算机的步骤和过程,CPU风扇(INTEL)的详细拆卸和安装方法_计算机软件和应用程序_IT / computer_special...
- 网络文件常常提到类似./run.sh的数据,这个命令的意义是什么?
- 谈谈c语言中delay的用法
- 机翻福音-多种语言平行语料库资源
热门文章
- jquery-table2excel,进行导出excel
- Endnote插入文献显示类似{Shao, 2019 #345}
- cockroachdb mysql_[Translate] CockroachDB: 示例集
- 苹果x微信语音十秒就断_QQ更新iOS8.0版,增添“语音进度条”功能,网友:微信,快接招!...
- c语言贪吃蛇游戏闪烁,C语言贪吃蛇闪屏问题,求大神!!!
- 解决java.lang.NoClassDefFoundError错误的一种方案
- 自定义事务管理器TransactionManager对象
- 【后端研发笔试】3.25号 阿里巴巴笔试题
- B站:以SLO为核心的可用性观测与质量运营
- 1073: 青蛙爬井