【发布时间】:2016-02-16 21:32:48
【问题描述】:
在
http://en.redinskala.com/finding-the-ep/
有关于如何在 exe 文件中找到入口点的文件偏移量的信息。
这里我可以读到
EP(文件)= AddressOfEntryPoint – BaseOfCode + .text[PointerToRawData] + 文件对齐
但是,当我自己计算这个时(我使用了几个不同的 exe 文件),我得出的结论是
EXE 文件入口点的偏移量 = AddressOfEntryPoint + .text[PointerToRawData] - .text[虚拟地址]
AddressOfEntryPoint 是从 IMAGE_OPTIONAL_HEADER 获取的,另外两个值是从 IMAGE_SECTION_HEADER 获取的。
那个网页上的信息是假的吗?像他们一样添加 FileAlignment 似乎是错误的,没有意义。或者是吗?文件对齐建议我应该使用模数或其他东西来计算值。如果 BaseOfCode 和 FileAlignment 是相同的值(大多数情况下它们是相同的),将它们添加到计算中不会干扰,但它有什么意义呢?
【问题讨论】:
-
我不得不重新阅读 PE 规范,但添加文件对齐似乎确实是错误的。如果未对齐的偏移量是
x,我会选择x - x % FileAlignment。
标签: windows assembly portable-executable