在
http://en.redinskala.com/finding-the-ep/
有关于如何在exe文件中找到入口点的文件偏移量的信息。
我可以在这里阅读
EP(文件)= AddressOfEntryPoint - BaseOfCode + .text [PointerToRawData] + FileAlignment
然而,当我自己计算这个(我使用了几个不同的exe文件)时,我得出的结论是
EXE文件中入口点的偏移= AddressOfEntryPoint + .text [PointerToRawData] - 的.text [其VirtualAddress]
从IMAGE_OPTIONAL_HEADER获取AddressOfEntryPoint,从IMAGE_SECTION_HEADER获取其他两个值。
该网页上的信息是否为假?像它们一样添加FileAlignment似乎是错误的,它没有意义。或者是吗?文件对齐表明我应该使用modulo或其他东西来计算值。如果BaseOfCode和FileAlignment是相同的值(主要是它们),它不会干扰将它们添加到计算中,但它有什么意义呢?
答案 0 :(得分:2)
正确,您根本不需要使用FileAlignment
值。
算法应该如下(非常类似于你的):
AddressOfEntryPoint
(这是VA)VirtualAddress
和PointerToRawData
字段。VirtualAddress
减去AddressOfEntryPoint
:您现在拥有“delta”PointerToRawData
。您根本不需要FileAlignment
,因为入口点所在的部分已经与该值对齐。