逆向工程核心原理 pe文件(小试牛刀)小结

在开始这篇pe文件格式时,我阅读到其中的练习时感到比较混乱,在这里我推荐大家先使用PeViews这款软件进行学习。首先应该使用该软件理清思路然后再自己找一遍。PeViews如下图:

逆向工程核心原理 pe文件(小试牛刀)小结_第1张图片


首先看着课本能分清楚基本的结构:DOS头——》DOS存根——》NT头(NT文件头和NT可选头)——》各种节区头(其中的.text .data .rsrc等)

1.我更愿意先找到文件的Imagebase


第一个蓝框为NT可选头的起始地址010bh,第二个则为Imagebase,有了Imagebase你就可以在ollyDbg中根据IAT的RVA找到函数。

2.然后各个节区的RVA和RAW(使用课本的记事本.exe)

第一个蓝框为.text的相对虚拟地址00001000h,第二个为.text在文件中的地址00000400h


3.找到IMPORT Directory  Table(导入目录表)

逆向工程核心原理 pe文件(小试牛刀)小结_第2张图片

这个IMPORT Directory  Table的地址(第二个蓝框处00007604h)在这里是NT文件头起始约128个字节处,后面那四个字节000000c8h是Size成员。

前面那四个字节00000000h是导出表的字节大小.找到IMPORT Directory  Table的地址即可根据RAW=RVA-VA(地址所属节区的VA)+PointerToRawData(就是节区在表中的实际位置),这里的计算就要根据第一、二步的Imagebase、节区相对虚拟地址和节区在文件中的地址————》00007604h-00001000h+00000400h=00006a04h(IMAGE_IMPORT_DESCRIPTOR的结构数组)如下图:

逆向工程核心原理 pe文件(小试牛刀)小结_第3张图片


逆向工程核心原理 pe文件(小试牛刀)小结_第4张图片

分别给出该数组中前五个成员的RVA和RAW,这里可以试着计算RAW。例如使用Name成员的RAW即可在文件中找到导入函数所属库的名称。INT记录着调用的API函数,而IAT记录着调用的dll中的函数的位置


而在IAT的调试中,要先去用ollydbg查看条用函数的硬编码(每个系统可能不同),再在本文件的ollydbg中找到该函数


送上思维导图:

逆向工程核心原理 pe文件(小试牛刀)小结_第5张图片




你可能感兴趣的:(逆向工程核心原理 pe文件(小试牛刀)小结)