1、知識點
微軟從windows vista/windows server 2008(kernel version 6.0)開始采用ASLR技術,主要目的是為了防止緩沖區溢出
ASLR技術會使PE檔案每次加載到記憶體的起始位址随機變化,并且程序的棧和堆的起始位址也會随機改變。
這樣的PE不好調試,如果不想啟用ASLR。可以通過以下兩種方法解決。
- VS編譯器:若不想使用ASLR功能,可以在VS編譯的時候将“配置屬性->連結器->進階->随機基址”的值修改為否。
- 010editor:把DllCharacteristics這個位置,将PE中8140的資料改為8100。
IMAGE_NT_HEADERS NtHeader
IMAGE_OPTIONAL_HEADER32 OptionalHeader
DLL_CHARACTERISTICS DllCharacteristics
2、參考
- ASLR
http://www.cnblogs.com/dliv3/p/6411814.html
- ASLR pe 分析
https://www.cnblogs.com/studyskill/p/7849595.html