-1
A
回答
0
映射在執行之前是必需的,因爲您無法預知內存中每個DLL和其他資源的地址,以及程序中動態分配內存的地址。 PE文件頭告訴操作系統如何分配.text
和.data
內存段。
回到80年代和90年代初,你可以回憶.COM
文件。這些被複制並執行的內存副本(%EIP指向它的地址)是筆直的,因爲那裏限制了.text數據的64kb。
+1
這與64Kb限制無關。映射是需要的,因爲在早期,大多數代碼並不是獨立的,因此不能在不破壞它的情況下將其加載到任意地址。 – Devolus
+0
感謝您的詳細信息。 –
相關問題
- 1. 爲什麼我們需要crossCheckMatching功能?
- 2. 爲什麼我們需要「android.permission.BROADCAST_STICKY」權限才能發送Sticky Broadcast
- 3. Yii2。爲什麼我需要上傳兩次文件才能產生效果?
- 4. 當我們有.java文件可用時,爲什麼我們需要JSP文件?
- 5. 爲什麼PE需要Original First Thunk(OFT)?
- 6. 爲什麼我們需要在這裏取消設置?
- 7. ELF文件 - 什麼是部分,爲什麼我們需要它?
- 8. 爲什麼我們需要爲openstack創建localrc文件
- 9. 我需要做什麼才能使此修剪方法有效?
- 10. 爲什麼PHP需要「執行」權限才能寫入文件?
- 11. 爲什麼iOS NSDefaults需要兩次啓動才能生效?
- 12. wsdl是否需要成爲有效的wsdl文件才能正常工作
- 13. 爲什麼我們需要analysis_export當我們有analysis_port
- 14. 當我們有點子時,爲什麼我們需要Anaconda?
- 15. 雖然我們有Swing,但爲什麼我們需要JavaFX?
- 16. 爲什麼我們需要simple_one_for_one?
- 17. 爲什麼我們需要TensorFlow tf.Graph?
- 18. 爲什麼我們需要使用prompt.start()?
- 19. 爲什麼我們需要scalaz.stream迭代?
- 20. 爲什麼我們需要WCF
- 21. 爲什麼我們需要Anaconda 2.7?
- 22. 爲什麼我們需要編寫log.isDebugEnabled?
- 23. 爲什麼我們需要ng-click?
- 24. 爲什麼我們需要Control.Lens.Reified?
- 25. 我們爲什麼需要纖維
- 26. 爲什麼我們需要org.junit.ComparisonFailure?
- 27. 爲什麼我們需要addRequestHeader方法?
- 28. 爲什麼我們需要時代?
- 29. 爲什麼我們需要ContinueWith方法?
- 30. 爲什麼我們需要Java NIO Selector?
很難猜測「不執行」可能意味着什麼。卸載一個DLL,但仍然對導入的DLL函數進行生命調用是一個非常常見的錯誤。幸運的是,如果它產生了一個AVE,如果發佈的地址空間被另一個DLL重用,這真是糟糕的一天。 –
「內存轉儲」是什麼意思?雖然它已經在執行,或者您只是加載並映射它,並在第一條指令開始之前將其轉儲?有很大區別... – Devolus