如何准确读取PE文件入口点的首个字节?
如图,以ExeInfoPE为例,它读取到OLLYDBG.EXE的入口点的数位字节:例如OD入口点的首个字节为0xEB (图中圈红的部分)
我尝试获取入口点rva: OptionalHeader.AddressOfEntryPoint 之后,读取首个字节,但是结果总不对。
如何实现这个效果?要求支持32位和64位PE文件。有源码示例吗? 本帖最后由 lies2014 于 2024-10-4 02:47 编辑
磁盘状态的文件和内存状态的文件定位是不一样的,AddressOfEntryPoint 定义的是内存态的偏移,你直接读取文件的话应该取的是文件偏移,即 AddressOfEntryPoint 对应的节表的文件偏移。
以 OD 为例,AddressOfEntryPoint 的内存偏移为 0x1000,对应的节为 .text, .text的内存偏移为 0x1000(对应 AddressOfEntryPoint),文件偏移为 0x600,读取磁盘文件的偏移 0x600 就能取到首字节 0xEB。
代码可参照滴水的节表相关部分:
https://blog.csdn.net/Edimade/article/details/130299882
lies2014 发表于 2024-10-4 00:11
磁盘状态的文件和内存状态的文件定位是不一样的,AddressOfEntryPoint 定义的是内存态的偏移,你直接读取文 ...
解决了,读文件偏移,而不是内存偏移。
页:
[1]