假设我有一个PE文件(E.G.Notepad.exe)。假设当文件保存在硬盘中时,notepad.exe的.text部分位于0xabcdefgh偏移量。
那么,假设未启用ASLR,如何在执行时将相同的可执行文件.text
加载到内存中时,如何计算/预测(notepad.exe)
部分的偏移?
先谢谢。
答案 0 :(得分:2)
PE文件与位置无关。相反,它们有一个首选的加载地址,如果操作系统无法(因为地址空间已经被使用,或者因为ASLR有效)将它加载到该地址中,它必须重新定位它。见这里:
http://en.wikipedia.org/wiki/Portable_Executable#Relocations
因此,如果未启用ASLR(地址空间布局随机化),则应加载标头中指定的首选加载地址指定的偏移量。这可能不是DLL的情况,但对于可执行文件应该是。
您可以在此处获取有关文件格式的更多信息: