Windows内核6.0版本之后增设了ALSR(Address Space Layout Randomization)机制, 使得每次PE文件记载到虚拟内存的起始地址不一样, 而且栈和堆起始地址也不一样.
熟知PE文件头格式的逆向玩家, 可以通过修改一个标志位来达到删除编译好的可执行文件的ASLR功能.
PE文件头中IMAGE_OPTIONAL_HEADER\DLL Characteristics设
有IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE标志, 8140改到8100即可删除ASLR.
Hex Editor打开根据PE文件格式找到偏移(0x136)处修改.
或者使用PE文件专用工具CFF Explorer修改
注意每个PE文件不一定相同, 需要PE-view查看, 或者CFF直接看改即可.