从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 ***** 我想快點搞定IAT Hook 我想快點搞定IAT Hook 回复 1# 小局2005
dddddddddddd 回复 1# 小局2005
这种HOOK不懂 111111111111111111 我想快點搞定IAT Hook 啊啊啊啊啊啊啊啊啊啊 非常感谢,看看再说 支持楼主21