【问题标题】:How to find the offset of the Import Section in a PE32 file?如何在 PE32 文件中找到导入部分的偏移量?
【发布时间】:2012-04-16 02:52:20
【问题描述】:
我已经尝试了好几个小时,但我似乎无法理解。我一直试图在 Microsoft 文档中查找信息,但信息量让我不知所措。我的问题是:应该如何在 PE32 文件中找到 Import Section 的偏移量?我的意思不是文件何时加载到内存中,我的意思是当它在磁盘上时。我应该查看对象表的内部吗?另一个问题,对象表是否概述了紧随其后的部分?
感谢您的宝贵时间。
【问题讨论】:
标签:
windows
assembly
executable
portable-executable
【解决方案1】:
自从我开始研究 PE 文件以来已经有一段时间了,但是 . . .
如果我正确阅读了documentation,则节表将紧跟在标题后面。可以通过计算表头大小直接定位到section table。
每个节表条目的长度为 40 个字节(请参阅文档的第 25 页)。第一个字段是一个 8 字节的名称。我假设您可以从中获取导入部分的名称。记录中的偏移量 20 处是指向原始数据的指针。这被描述为“指向 COFF 文件中该部分的第一页的文件指针”。偏移量 16 处的字段给出了大小。
所以你应该可以定位到段表,然后依次读取每个段头找到导入地址表,然后得到指向原始数据的指针。
【解决方案2】:
看看PeDump。使用此工具(提供源代码),您可以了解它的工作原理。