最近在学习《****核心原理》,文中在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  如下图

Win7手工查找notepad.exe的IAT

(二)查找IMAGE_IMPORT_DESCRIPTOR结构体的RVA

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

Win7手工查找notepad.exe的IAT

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

Win7手工查找notepad.exe的IAT

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

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

Win7手工查找notepad.exe的IAT

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

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

OriginalFirstThunk(INT)   0000A28C                         968C                

Name                               0000A27C                         967C

FirstThunk(IAT)           00001000                           400H

(三)验证结果

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

Win7手工查找notepad.exe的IAT



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

RAW=9A90

Win7手工查找notepad.exe的IAT


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

Win7手工查找notepad.exe的IAT


懒得验证FirstThunk了。。。

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

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-09-26
  • 2021-08-07
  • 2021-09-26
  • 2021-06-05
  • 2022-01-10
猜你喜欢
  • 2022-12-23
  • 2021-12-17
  • 2021-08-30
  • 2021-12-07
  • 2021-08-13
  • 2022-12-23
相关资源
相似解决方案