小局2005 发表于 2011-8-8 08:33:41

从PE文件入手绕过IAT HOOK

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都必须走这一步.

实现方式**** Hidden Message *****

n4chen 发表于 2011-8-24 09:49:34

我想快點搞定IAT Hook

akenabc123 发表于 2011-10-27 02:37:25

我想快點搞定IAT Hook

zh63573351 发表于 2012-1-14 22:34:21

回复 1# 小局2005


    dddddddddddd

zhangchenggu 发表于 2012-3-11 22:26:03

回复 1# 小局2005


    这种HOOK不懂

seny11 发表于 2014-1-10 16:48:31

111111111111111111

ugdutjf009 发表于 2014-5-5 10:29:38

我想快點搞定IAT Hook

a1472535 发表于 2014-5-14 19:39:51

啊啊啊啊啊啊啊啊啊啊

kx500 发表于 2018-7-16 21:34:51

非常感谢,看看再说

qq2423451142 发表于 2018-11-14 07:15:59

支持楼主21
页: [1] 2 3
查看完整版本: 从PE文件入手绕过IAT HOOK