我读到可执行文件将代码存储在不同的部分中。例如,数据的单独部分等。这是不同的平台,如Win或MacO或Linux?
对它的一些见解会非常有帮助。
答案 0 :(得分: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
答案 1 :(得分:2)
Windows使用Portable Executable格式。
* nix通常使用可执行文件和可链接格式。以前有些人使用过SOM,a.out,ECOFF,XCOFF,COFF和其他一些。
OS X和iOS(以及NeXT,历史粉丝)使用Mach-O。
PowerPC系统仍支持首选可执行格式,该格式与早期的Mac OS和某些形式的BeOS一起使用。
可能以http://en.wikipedia.org/wiki/Comparison_of_executable_file_formats
开头