IAT hook

导入表hook原理:修改导入表中某函数的地址到自己的补丁函数。IATHook

  1. 通过GetProcAddress获取目标函数地址
  2. 在程序内存中找到所在dll的导入表
  3. 查找目标函数地址保存的位置
  4. 把地址修改为自己补丁函数

问题:当该函数递归调用时,不会被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的区别相关推荐

  1. Windows内核API HOOK 之 Inline Hook

    来源:CSDN   作者:daiwen 名字起得好,Inline hook,乍一听,似乎很高深.此处的Inline,我以为,意指将汇编代码直接写入内核API的内存区域.Inline Hook不像用户态 ...

  2. PLT hook与Inline hook

    前言 在目前的安卓APP测试中对于Native Hook的需求越来越大,越来越多的APP开始逐渐使用NDK来开发核心或者敏感代码逻辑. 个人认为原因如下: 安全的考虑.各大APP越来越注重安全性,ND ...

  3. SSDT Hook的妙用-对抗ring0 inline hook

    ******************************************************* *标题:[原创]SSDT Hook的妙用-对抗ring0 inline hook  * ...

  4. 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 ...

  5. Inline Hook

    @author: dlive IAT Hook时如果要钩取的API不在IAT中(LoadLibrary后调用),则无法使用该技术.而Inline Hook不存在这个限制. 0x01 Inline Ho ...

  6. C语言playsoundw函数,使用inline hook实现修改PC微信通知铃声-哥哥微信来了

    本帖最后由 bester 于 2020-2-15 01:20 编辑 原贴:https://www.52pojie.cn/thread-1103441-1-1.html 最近频繁刷某音刷到哥哥微信来了的 ...

  7. inline hook __usercall 函数

    usercall 调用约定表示这个函数用寄存器传参,hook 它就没那么方便,需要整一个包装函数.原理是很简单的,下面给个例子,一看就懂: 说明一下我这里用的是 tramp hook 技术,或者叫&q ...

  8. C/C++:Windows编程—Inline Hook内联钩子(上)

    前言 先介绍下Windows中的Hook技术.Hook是Windows中提供的一种用以替换DOS下"中断"的系统机制,中文译为"挂钩"或"钩子&quo ...

  9. HOOK 几种实现方式区别

    Hook简介 微软的MSDN中,对Hook的解释为: A hook is a point in the system message-handling mechanism where an appli ...

最新文章

  1. 吴恩达老师深度学习视频课笔记:构建机器学习项目(机器学习策略)(1)
  2. shell脚本_查找无效网址
  3. 网络分析系统_MetagenoNets:在线宏基因组网络分析实操教程
  4. 【django】项目准备
  5. IOS之Swift的CoreData入门使用案例
  6. 前端学习(2968):完善登录页面
  7. 组态王bitset用法_关于STEP7在组态王里定义I/O离散变量
  8. logback日志pattern_Springboot整合log4j2日志全解
  9. 计算机科学中最重要的 32 个算法
  10. vc++中实现进度条
  11. 微星笔记本win键失灵了怎么解决
  12. 餐饮管理系统开发源码
  13. 中级职称考试 计算机 英语考试,中级职称工程师职称计算机考试需要考过哪些模块...
  14. 斗鱼 Juno 监控中心的设计与实现
  15. gbdt算法_双色球最简单的算法
  16. 修复win10右键卡死鼠标转圈
  17. 详细写出拆卸计算机的步骤和过程,CPU风扇(INTEL)的详细拆卸和安装方法_计算机软件和应用程序_IT / computer_special...
  18. 网络文件常常提到类似./run.sh的数据,这个命令的意义是什么?
  19. 谈谈c语言中delay的用法
  20. 机翻福音-多种语言平行语料库资源

热门文章

  1. jquery-table2excel,进行导出excel
  2. Endnote插入文献显示类似{Shao, 2019 #345}
  3. cockroachdb mysql_[Translate] CockroachDB: 示例集
  4. 苹果x微信语音十秒就断_QQ更新iOS8.0版,增添“语音进度条”功能,网友:微信,快接招!...
  5. c语言贪吃蛇游戏闪烁,C语言贪吃蛇闪屏问题,求大神!!!
  6. 解决java.lang.NoClassDefFoundError错误的一种方案
  7. 自定义事务管理器TransactionManager对象
  8. 【后端研发笔试】3.25号 阿里巴巴笔试题
  9. B站:以SLO为核心的可用性观测与质量运营
  10. 1073: 青蛙爬井