我已经打开了一个我用ImageHlp.dll编写的程序来玩一下,我注意到这个文件似乎有很大的差距。 据我了解,对于每个PE部分,节标题将其在文件中的偏移量作为PhysicalAddress
,其大小为SizeOfRawData
,因此从PhysicalAddress
到PhysicalAddress + SizeOfRawData
所有内容都应该是该节。 但是有大量的EXE文件没有被这些范围所覆盖,所以我必须丢失一些东西。
我知道我可以使用ImageRVAToSection并给它一个RVA地址来找出RVA位于哪个部分。有没有办法做类似的文件偏移? 我怎样才能找出哪个PE节字节$ ED178或任何属于?
编辑:对不起,我没有仔细阅读你的问题。
做一些看,我找到像你所提到的几个文件,节头中的数据不包括文件的全部内容。 到目前为止,我发现的大多数都包含一个没有涉及的调试记录。 还有一些其他的差异我还没有弄清楚。 当/如果我能弄清楚更多,我会添加它。
我发布了如何使用VirtualAllocEx为代码洞穴腾出空间? 检查存储器中加载的 PE的代码片段。 如果您将内存中的DLL与磁盘上的包含(显示ImageHlp.dll)进行比较,您可能会发现问题的答案。