-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