2012-09-01 25 views
5

我读过一个可执行文件将代码存储在不同的部分。例如,一个单独的数据部分等。这是通用的不同平台,如Win或MacOs或Linux?代码如何存储在可执行文件中?

一些洞察将是非常有用的。

回答

2

Windows使用Portable Executable格式。

* nix通常使用可执行文件和可链接格式。以前一些使用SOM,a.out,ECOFF,XCOFF,COFF和其他一些。

OS X和iOS(以及NeXT,历史粉丝)使用Mach-O。

PowerPC系统仍然支持早期Mac操作系统和某些形式的BeOS使用的Preferred Executable Format。

http://en.wikipedia.org/wiki/Comparison_of_executable_file_formats

4

也许开始你是在正确的可执行文件有几个部分或段:不是所有的人,却是代码。

通常有一段代码 - 在ELF和PE中,通常称为.text。其他的人存在于存储动态链接数据,硬编码字符串,只读数据,全局变量等

看到这些自己,而不是维基和谷歌,尝试在手中:

在Windows中:您有一个名为DUMPBIN.EXE的工具,是Visual Studio的一部分。如果你无法掌握这一点,请使用Dependency Walker(可免费下载)。这将解析PE和PE32 +(即64位)文件

在Linux中:对于ELF文件,使用objdump -x或readelf(两者几乎完全相同,但略有不同)。

在Mac中:使用otool -l在Mach-O文件中查看加载命令(显示部分和段)。

使用任何一种或所有工具将有望让您更好地了解工作情况。

希望这有助于

TG

相关问题