将二进制可执行文件加载到内存中时,可以使用十六进制编辑器和汇编代码中的符号对其进行反汇编甚至查看。这些总是以像0x804这样的东西开始的......我认为它是程序存储器部分。但是我的问题是,由于这些地址不是从程序开始的偏移量,所以二进制程序如何知道它将被加载到内存中的位置?二进制可执行文件如何知道它在内存中的位置?
回答
可执行文件通常有一个标题,其中一个字段是加载地址。
但文件不能*总是*被加载到相同的位置,可以吗? – Jumhyn 2012-03-01 00:34:55
在Windows上,EXE的默认加载位置是0x400000,EXE始终可用,除了预装载的系统DLL具有(其他)固定位置以外,始终是首先加载进程的EXE。 – 2012-03-01 00:42:19
@Jhhyn什么可以展示一个可执行文件被加载在相同的位置?你是对的图书馆 - 该位置可以用于其他事情。但对于可执行文件,您正在为新的可执行文件创建一个新的地址空间,因此它全部免费开始。 – 2012-03-01 01:10:11
- 1. 如何打开可执行二进制文件而不在ollydbg中运行它?
- 2. 32位内核如何运行64位二进制文件?
- 3. 如何在我的Javascript中执行二进制文件?
- 4. 有谁知道我可以如何在Riak中存储大的二进制值?
- 5. 将可执行二进制文件添加到内核映像
- 6. 如何知道main()在内存中的位置?
- 7. 在iPhone上执行二进制文件
- 8. 如何为非可执行二进制文件生成CFG
- 9. 如何在多线程HPC群集中运行二进制可执行文件?
- 10. 执行格式错误。二进制文件不可执行
- 11. 是否可以在java中执行二进制文件?
- 12. MATLAB读取二进制文件(十六进制)的内容,知道格式
- 13. 如何知道script.py的文件名,同时用ironpython执行它
- 14. 如何在Mac OS X上将二进制文件的内容嵌入到可执行文件中?
- 15. 在宝石中销售二进制可执行文件的可行性?
- 16. 如何知道可执行文件中有哪些功能?
- 17. 如何在C中找到可执行文件的位置?
- 18. 将.m文件转换为二进制可执行文件
- 19. 将JRuby二进制文件打包成可执行文件夹
- 20. 我如何在二进制可执行文件中包含鸡模块
- 21. 如何执行文本文件的二进制搜索
- 22. bash,无法执行二进制文件
- 23. 无法执行二进制文件centos?
- 24. PhantomJs无法执行二进制文件
- 25. 用shebang执行二进制文件
- 26. AWS:不能执行二进制文件
- 27. GCC编译的二进制文件给予 “不能执行二进制文件”
- 28. g ++编译的二进制文件给“不能执行二进制文件”
- 29. 如何在Qt程序中嵌入二进制可执行文件(在运行时执行)?
- 30. 读二进制文件不知道文件格式
目前尚不清楚你在问什么。你在问一个正在运行的可执行文件如何确定它在内存中的位置?如果是这样,为什么需要知道?另外,您是否正在考虑一些特定的平台?请参阅本文档的[装载程序]部分(http://www.iecc.com/linker/linker08.html)。 – 2012-03-01 00:25:38
我更多地询问程序中的地址是如何准确的。一个程序并不总是能够被加载到相同的位置,所以这些地址如何指向正确的东西。 – Jumhyn 2012-03-01 00:34:37
是的,它可以。 http://en.wikipedia.org/wiki/Paging – 2012-03-01 00:38:23