导入导出地址表分析(根据库文件名求出:导入函数数量、函数序号、函数名称)
导入地址表(Import Address Table,IAT)用来记录程序正在使用哪些DLL中的哪些函数。
导入名称表(Import Name Table,INT)
一、找出库文件名和RVAsec和RAWsec
通过分析PE头,可得notepad.exe的各节区头范围如表4-12所示。并分析出表4-13。
二、分析INT和IAT,得出导入函数数量
下面进一步分析notepad.exe文件的INT和IAT。
以 KERNEL32.dll
为例,该DLL对应的 INT 数组和 IAT 数组在PE中的RAW偏移量分别为6B58H和48CH。
PE文件的偏移量区间6B58H~6C3FH
的空间保存INT,其中IMAGE_THUNK_DATA32结构的个数为57。
这里:57=14行×4+1,这个就是导入函数数量
PE文件的偏移量区间48CH~573H
的空间保存IAT,其中IMAGE_THUNK_DATA32结构的个数也为57。
INT和IAT的内容分别如图4-4(a)和图4-4(b)所示。
三、函数序号、函数名称
接着分析INT的第一项(00008024H)所指向的IMAGE_IMPORT_BY_NAME结构的内容,
该内容在PE文件的偏移量8024H-1000H+ 400H=7424H位置。
注:这里是8024,因为是2480的小端存储方式。可以通过LordPE算出。
该结构的内容如图4-5所示。
其中Hint字段的序号值为013EH,而被导入函数的Name字段经十六进制编辑器分析出为"GetCurrentThreadId”。
也可以用类似的方法分析出KERNEL32.dl1中所有被notepad.exe导入的函数的序号和函数名。
第一函数序列号(小端):013E
第一函数名:GetCurrentThreadId
函数序号、函数名称可以通过HXD右键选择范围再输入偏移量得出:
四、导出表分析(PE文件节区的删除和增加)
【PE结构】由浅入深PE基础学习-菜鸟手动查询导出表、相对虚拟地址(RVA)与文件偏移地址转换(FOA)
重点看:
pe文件节区的删除和增加