易语言教程_易语言源码_易语言写挂_易语言论坛_看流星社区

 找回密码
 注册
零基础辅助入门教学 原创 高清 专业课程售后(每日解答)
零基础辅助入门教学 原创 高清 专业课程售后(每日解答)
零基础辅助入门教学 原创 高清 专业课程售后(每日解答)
零基础辅助入门教学 原创 高清 专业课程售后(每日解答)
零基础辅助入门教学 原创 高清 专业课程售后(每日解答)
零基础辅助入门教学 原创 高清 专业课程售后(每日解答)
赞助广告位 请点击这里联系站长 QQ20209081
赞助广告位 请点击这里联系站长 QQ20209081
赞助广告位 请点击这里联系站长 QQ20209081
查看: 1582|回复: 9

从PE文件入手绕过IAT HOOK

[复制链接]
发表于 2011-8-8 08:33:41 | 显示全部楼层 |阅读模式
IAT HOOK简介

API HOOK估计没必要多介绍了,简单的来讲就是通过某种方式来改变API函数的工作流程.一般来讲有两种方法:IAT HOOK和INLINE HOOK.前一种应用较为广泛,一方面因为简单,还一方面因为稳定.他的原理就是改写进程空间中要HOOK的API所在模块的函数引入表,使之指向替换原API函数的函数地址(某些木马就是利用IAT HOOK的方式,挂钩NtQuerySystemInformation的方式来实现进程隐藏).这里感觉还是有必要再说一点INLINE HOOK,这个复杂点,直接进入被HOOK的API函数内部去修改他,采用指令call或者jmp等,迫使API改变流程,跳到自己的替换函数中.通常都是在函数头部前10个字节内修改.

如何搞定IAT HOOK

注意这里说的是搞定,而不是修复IAT HOOK,搞定所指的就是只要不让那个IAT HOOK起作用就行了.

方案1:通过LoadLibrary和GetProcAddress来动态获取API地址.

忘了是在哪看到过这个方法,实际上这个方法可以说根本无效,Jeffrey Richter在核心编程里面给出的例子就提到过这个问题,为了在动态获取API调用的情况下也能让HOOK生效,首先就应该把LoadLibraryA,LoadLibraryW......等等那几个可以实现动态获取的函数全部都HOOK住.这种方案被直接否决了.

方案2:直接硬编码,从ntdll.dll里面调用NativeAPI.

虽然听起来有点恐怖,但这种方式确实比方案1要有效,只是ntdll.dll有500多函数,全部应编码有点天方夜谭,如果单纯了为了对付某几个特定的HOOK还是可以的.

方案3:直接从PE文件入手,自己读取导出表获取API地址

这也是我认为对付IAT HOOK最有效的方式,无论是检测IAT HOOK还是绕过IAT HOOK或者是修复IAT HOOK都必须走这一步.

实现方式
游客,如果您要查看本帖隐藏内容请回复
发表于 2011-8-24 09:49:34 | 显示全部楼层
我想快點搞定IAT Hook
发表于 2011-10-27 02:37:25 | 显示全部楼层
我想快點搞定IAT Hook
发表于 2012-1-14 22:34:21 | 显示全部楼层
回复 1# 小局2005


    dddddddddddd
发表于 2012-3-11 22:26:03 | 显示全部楼层
回复 1# 小局2005


    这种HOOK不懂
发表于 2014-1-10 16:48:31 | 显示全部楼层
111111111111111111
发表于 2014-5-5 10:29:38 | 显示全部楼层
我想快點搞定IAT Hook
发表于 2014-5-14 19:39:51 | 显示全部楼层
啊啊啊啊啊啊啊啊啊啊
发表于 2018-7-16 21:34:51 | 显示全部楼层
非常感谢,看看再说
发表于 2018-11-14 07:15:59 | 显示全部楼层
支持楼主21
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|看流星社区 |网站地图

GMT+8, 2019-1-22 05:42

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表