入口点检测作为文件偏移量的问题

逆向工程 聚乙烯 入口点
2021-07-06 10:20:26

我发现查找文件偏移量实际上是程序入口点的问题。

如果遇到问题,AddressOfEntryPoint 的值为 0x1018。这是映射此地址的部分。

节标题

我认为入口点应该是 0x28 = 0x10 + 0x1018 - 0x1000 (PointerToRawData + AddressOfEntryPoint - VirtualAddress)

但是工具说它是 0x18 代替。我不知道为什么,做了一些实验并想出了另一个公式。

0x18 = (0x10 / 0x200) * 0x200 + 0x1018 - 0x1000 ((PointerToRawData / FileAlignment) * FileAlignment + AddressOfEntryPoint - VirtualAddress)

我使用 OptionalHeader 中的 FileAlignment 并且效果很好,但是我不知道这是巧合还是有记录的地方,所以在这里要求确认。


此外,可能并不重要,但文件使用 UPack(0.399) 打包,打包签名为 BE****AD50FF7634EB7C4801。

1个回答

来自https://code.google.com/p/corkami/wiki/PE#PointerToRawData --

如果某个部分的物理开始时间低于 200h(标准对齐的下限),则向下舍入为 0。

因此,入口点的物理偏移量将是: 0x00000018 = 0x00000000 + 0x00001018 - 0x00001000(PointerToRawData_rounded_down + AddressOfEntryPoint - VirtualAddress)