And*_*dén 6 windows assembly portable-executable
在
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是相同的值(主要是它们),它不会干扰将它们添加到计算中,但它有什么意义呢?
正确,您根本不需要使用该FileAlignment值。
该算法应该如下所示(与您的非常相似):
AddressOfEntryPoint从 IMAGE_OPTIONAL_HEADER.AddressOfEntryPoint获取(这是一个 VA)VirtualAddress和PointerToRawData字段。VirtualAddress来自AddressOfEntryPoint:你现在有一个“增量”PointerToRawData.您根本不需要,FileAlignment因为入口点所在的部分已经与该值对齐。