导入表hook原理是修改导入表中某函数的地址到自己的补丁函数,具体步骤如下:

1. 通过GetProcAddress获取目标函数地址

2. 在程序内存中找到所在dll的导入表

3. 查找目标函数地址保存的位置

4. 把地址修改为自己补丁函数

导出表hook原理跟导入表相同,步骤也差别不大

但是二者都存在一个问题,就是当目标函数是一个递归函数时,只有第一次能hook成功,函数内部调用自身时不会执行补丁代码,因此最好的方法是Inline hook,如微软的detour库采用的方法,修改函数开头几个字节的机器码,使执行流程一进入函数就调到补丁代码,执行完补丁代码后在另外一个地方执行函数原来几个字节的代码(此处并不还原开头几个字节机器码),然后然后跳转到原函数patch后面的指令继续执行,永久的改变了函数内容。因为微软detour库有自带反汇编引擎,因此无需担心会破坏接下来执行的完整性,如果自己手动实现的话,需要先观察函数开头的执行,做到指令对齐,以免破坏patch后指令的完整导致执行崩溃。

IAT HOOK、EAT HOOK和Inline Hook相关推荐

  1. linux 进程 inline hook,高级Linux Kernel Inline Hook技术分析与实现

    高级Linux Kernel Inline Hook技术分析与实现 时间:2015/6/28作者:网管联盟 一.简述 目前流行和成熟的kernel inline hook技术就是修改内核函数的opco ...

  2. linux 进程 inline hook,高级Linux Kernel Inline Hook技术分析与实现 -电脑资料

    ==Ph4nt0m Security Team== Issue 0x03, Phile #0x03 of 0x07 |=---------------------------------------- ...

  3. IAT hook与inline hook的区别

    IAT hook 导入表hook原理:修改导入表中某函数的地址到自己的补丁函数.IATHook 通过GetProcAddress获取目标函数地址 在程序内存中找到所在dll的导入表 查找目标函数地址保 ...

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

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

  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. WIN32 Inline HOOK

    Inline hook 和CE里面的代码注入很像(应该是一个东西),这个技术的原理是,修改汇编指令,让某个指令跳转到我们定义的函数,然后在函数内完成被替换的指令,然后再跳转回去.在我们定义的函数内,我 ...

  9. inline hook学习

    vs2013编译 //inline hook 实际上就是指 通过改变目标函数头部的代码来使改变后的代码跳转至我们自己设置的一个函数里,产生hook.#include <windows.h> ...

  10. Windows驱动开发学习笔记(六)—— Inline HOOK

    Windows驱动开发学习笔记(六)-- Inline HOOK SSDT HOOK Inline Hook 挂钩 执行流程 脱钩 实验一:3环 Inline Hook 实验二:0环 Inline H ...

最新文章

  1. Android系统Recovery工作原理之使用update.zip升级过程分析(五)
  2. Gradle在Windows下的下载安装与配置以及在IDEA中配置以及修改jar包位置
  3. Flink State 误用之痛,你中招了吗?
  4. 推动IT转型的三大法宝
  5. gsonformat插件_裂墙推荐!IntelliJ IDEA 常用插件一览,让效率成为习惯
  6. 【OpenCV 例程200篇】52. 图像的相关与卷积运算
  7. 教你制作U盘,内存卡,硬盘等等等的漂亮背景
  8. 葫芦全身都是宝的飞鸽传书2011
  9. 架构部署002--城域网_骨干网
  10. ES6学习笔记(对象新增方法)
  11. No MyBatis mapper was found in ‘[xx]‘ package. Please check your configuration.
  12. 20个常用模拟电路(详细分析)
  13. 计算机多媒体技术的主要特征是什么,计算机多媒体技术主要特征
  14. 《UNIX网络编程 卷1:套接字联网API》学习笔记——基本UDP套接字编程
  15. 停车场系统管理数据库设计说明书
  16. 公钥基础设施 PKI 技术与应用发展
  17. win10系统开机启动连不上网
  18. Unity3D射击类游戏制作第三节--游戏模型
  19. 全局壁纸美化v3.0安卓版
  20. 老师教我们用计算机画画就是彩虹,一年级上课文

热门文章

  1. Spring Cloud Eureka 全解 (1) - 总览篇
  2. android自动亮度流程,Android 如何实现亮度自动调节
  3. 习题——路由与交换机技术(五)
  4. PPT可以直接剪裁视频
  5. PV、UV、访问次数、跳出率、转化率、平均访问时长
  6. B站陈睿团队以内容为王,百万UP主共同成长
  7. android垂直进度条控件,Android常用控件之ProgressBar,水平进度条
  8. 简单的python爬取淘宝数据
  9. 国内手机市场遭遇寒风,智能手机企业激战千元机
  10. mscorsvw.exe进程占用CPU资源高居不下