據說有時加載程序將加載的exe加載到與鏈接程序假定的地址不同的地址。什麼都可能是加載程序這樣的情況?爲什麼加載程序不能加載到所需的位置
0
A
回答
2
基本上,這發生在以下情況下:
- 在其中圖像傾向於被加載已經被佔用的地址。例如,可能有另一個圖像已經加載在那裏。
- 要加載的圖像已編譯爲ASLR已啓用。
- 已設置全局標誌
FLG_LDR_TOP_DOWN
,這會強制模塊在最高可能的地址加載。
+0
在「全局標誌編輯器」(又名GFLAGS.exe)工具中使用的FLG_LDR_TOP_DOWN通常不安裝在客戶機器上。此外,該工具僅用於x64診斷。 – mox 2012-03-14 14:31:33
+0
如果它不是非ASLRed和非TOP_DOWN,則加載器將不會在錯誤的地址加載EXE,因爲EXE是其地址空間中存在的第一件事(即在ntdll和堆之前)。如果EXE具有無效的用戶模式地址,則在這種情況下進程將無法啓動,因此EXE將始終獲得它最喜歡的地址,但不會使用ASLR而不使用TOP_DOWN。 – SecurityMatt 2012-03-30 00:37:12
相關問題
- 1. 爲什麼設置Scala RemoteActors所需的類加載器?
- 2. 爲什麼Backbone.js中的router.navigate()不會加載所需的視圖?
- 3. 爲什麼不卸載類加載器就不能卸載類?
- 4. 爲什麼NSTableView不能重新加載?
- 5. 爲什麼我不能加載Nokogiri?
- 6. 爲什麼不能正確加載?
- 7. 爲什麼不能通過tableview加載?
- 8. CCL爲什麼不能加載hunchentoot?
- 9. 爲什麼不能加載sys-proctable?
- 10. 爲什麼class不能被URLClassLoader加載?
- 11. 爲什麼程序無法加載?
- 12. SP.js爲什麼不加載?
- 13. Zend_Db可能需要加載什麼?
- 14. 什麼是tomcat的引導加載程序,它與java的引導程序加載程序有什麼不同?
- 15. 爲什麼我不能將角餅乾加載到我的應用程序中?
- 16. 爲什麼我不能將紋理加載到我的應用程序中?
- 17. 爲什麼BIOS INT 0x19將引導加載程序加載到「0x7C00」?
- 18. 爲什麼Debug.Assert不能用於64位? (沒有符號加載)
- 19. 64位彙編程序未能加載
- 20. 位置和樣式ajax加載程序
- 21. 我使用加載程序我的項目爲Flash AC3但字體不適用於加載程序爲什麼?
- 22. 爲什麼我的圖像不能加載到Vue.js 2中?
- 23. Linux:爲什麼加載程序找到我的共享庫?
- 24. 加載程序的功能?
- 25. 爲什麼我的WP7設置需要這麼長時間才能加載?
- 26. Highmaps地圖不加載?爲什麼不加載?
- 27. 在WebPack中爲什麼在鏈中的css加載程序之後放置autoprefixer加載程序
- 28. 爲什麼我的Laravel應用程序不會加載?
- 29. 爲什麼我的express.js應用程序永不加載?
- 30. 爲什麼這個動態加載的庫不能訪問加載程序的全局變量?
你試圖解決什麼問題? – 2012-03-14 08:53:36
我在想,如果加載程序在某些不受歡迎的位置加載文件的情況很少,那麼也許我可以使用.reloc節來實現其他目的... – user1232138 2012-03-14 09:07:49
我不會推薦,不會。 Win32 PE EXE文件當前沒有重定位(與DLL不同),但我不推薦將隨機信息存儲在'.reloc'部分,這是因爲。 – 2012-03-14 09:10:31