从磁盘偏移量计算Win PE文件的任何部分的内存偏移量

时间:2014-02-15 11:38:05

标签: debugging portable-executable

假设我有一个PE文件(E.G.Notepad.exe)。假设当文件保存在硬盘中时,notepad.exe的.text部分位于0xabcdefgh偏移量。

那么,假设未启用ASLR,如何在执行时将相同的可执行文件.text加载到内存中时,如何计算/预测(notepad.exe)部分的偏移?

先谢谢。

1 个答案:

答案 0 :(得分:2)

PE文件与位置无关。相反,它们有一个首选的加载地址,如果操作系统无法(因为地址空间已经被使用,或者因为ASLR有效)将它加载到该地址中,它必须重新定位它。见这里:

http://en.wikipedia.org/wiki/Portable_Executable#Relocations

因此,如果未启用ASLR(地址空间布局随机化),则应加载标头中指定的首选加载地址指定的偏移量。这可能不是DLL的情况,但对于可执行文件应该是。

您可以在此处获取有关文件格式的更多信息:

http://www.wotsit.org/list.asp?fc=5