Win7手工查找notepad.exe的IAT

      最近在学习《逆向工程核心原理》,文中在WinXp下查看了一步一步手工查找了notepad.exe的IAT,所以我想试试能否在Win7下也完成分析,看看系统版本迭代升级之后PE header和PE body有些什么变化。

一、相关事项

(一)OS版本:Microsoft Windows 7 旗舰版  6.1.7601 Service Pack 1 Build 7601

(二)分析对象系统指导notepad.exe

(三)工具:1.x64dbg 2.peid 3.Hexeditor 4.calc.exe

二、分析过程

(一)打开notepad.exe  如下图

(二)查找IMAGE_IMPORT_DESCRIPTOR结构体的RVA

    首先,我们要找到NT头包含的可选头的DateDirectory数组的DateDirectory[1].virtualAdress,因为它是IAT的IMAGE_IMPORT_DESCRIPTOR结构体的RVA,在我瞎了狗眼的情况下,终于找到了A0A0这个地址。


但A0A0是RVA,因此我们必须把它转换为RAW,此时先用peid打开notepad,查看各个节区的偏移,如下图


通过上图,我们发现A0A0位于.text节区,因此使用RAV到RAW的公式有:A0A0H-1000H+400H=94A0

在Hexeditor中跳转到94A0这个地址,如下图,下图中的阴影部分就是IMAGE_IMPORT_DESCRIPTOR结构体了


整理下IMAGE_IMPORT_DESCRIPTOR结构体中有用的成员及其地址(此时是小端序)

                                          RVA(也位于.text段)     RAW=RVA-1000H+400H

OriginalFirstThunk(INT)   0000A28C                         968C                

Name                               0000A27C                         967C

FirstThunk(IAT)           00001000                           400H

(三)验证结果

(1)首先跳转到967C,此时name正是指向动态连接库名称字符串,说明我们的计算没有错。




(2)接下来跳转到968C ,此时它指向0000A690(RVA),如果计算无误,此地址应该指向api字符串,运用公式得出

RAW=9A90



(3)跳转至9A90,证明了我们的计算是正确的



懒得验证FirstThunk了。。。

レ(゚∀゚;)ヘ=3=3=3

猜你喜欢

转载自blog.csdn.net/h123120/article/details/79828220