深入IAT HOOK

在上一篇文章手动打造一个弹窗程序中,我们自己手写了一份导入表,在调用函数的时候,我们CALL的是导入地址表的一个地址,为什么要调用这里,而且在构造导入表的时候,导入名称表(INT)和导入地址表(IAT)里面装的内容是一样的,程序又是怎么去调用的,在这篇文章中就来分析一下。

注:以下操作是在 XP 上实现的,其他版本注意写保护机制

目录

0x00 IAT表的填写

0x01 IAT HOOK的原理

0x02 实现代码

0x00 IAT表的填写

在上一篇文章中,我们构造导入表的时候,将 IAT 表和 INT 表都指向的是函数名称所在的位置,然后在运行的时候,IAT 表中的内容会被替换成对应函数的地址,在调用的时候使用间接 CALL ,来调用其中所储存的地址。

下面先来验证一下,函数调用的地址是 0x4010D8 ,在 OD 中进行查看

可以发现,已经正确的填写了,那么操作系统又是根据什么来填写的

首先操作系统会通过 Name 字段找到当前导入表的名字,然后调用 LoadLibrary 得到句柄,如果没有找到的话会提示找不到 dll 文件,报错情况如下

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
引用中提到,hook可以分为两类:一种是修改函数代码,一种是修改函数地址。其中,修改函数代码的方式可以通过Inline hook实现,而修改函数地址的方式可以通过IAT hook、SSDT hook、IRP hook、IDT hook等方法实现。引用中给出了一个使用memcpy函数进行hook的示例代码。在这个示例中,先定义了一个结构体Thook修改代码,结构体中包含了一些汇编指令和跳转地址等信息。然后通过调用memcpy_s函数,将这个结构体的内容拷贝到目标函数的地址,从而实现对目标函数的hook。同样地,引用中也给出了另一个使用memcpy函数进行hook的示例代码,并且提到了备份被覆盖的代码以及跳转地址等操作。综上所述,可以使用memcpy函数进行hook操作,通过拷贝特定的指令或者结构体内容到目标函数的地址来实现hook。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [浅谈hook攻防](https://blog.csdn.net/hongduilanjun/article/details/124676926)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [各种HOOK方式和检测对抗方法](https://blog.csdn.net/qq_43355637/article/details/127061136)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值