我可能没有在正确的地方问这个问题,但是有没有地方我可以研究一下可执行二进制文件的结构是什么?比如,代码是如何组织的,符号存储在哪里,等等。
oyxsuwqo1#
这取决于你对哪个平台感兴趣!Windows使用PE binary format。Linux使用ELF。Mac OS(和iOS)使用Mach-O。一些较旧的UNIX系统使用a.out。
juud5qan2#
二进制文件的结构由创建它的应用程序定义。例如,你用Java或C编写的代码,并将其写入文件,只能由知道其结构的代码读回。在可执行文件的情况下,有不同的种类,这取决于操作系统。例如,要检查可执行文件和链接格式(ELF)文件的结构,请参见man elf:http://www.kernel.org/doc/man-pages/online/pages/man5/elf.5.html
man elf
yiytaume3#
您需要了解什么是ELF文件!这是你的starting point。这个article巧妙地解释了如何使用readelf和objdump剖析ELF文件
readelf
objdump
nc1teljy4#
这个article对可执行二进制文件做了一个非常容易理解的概述。
4条答案
按热度按时间oyxsuwqo1#
这取决于你对哪个平台感兴趣!
Windows使用PE binary format。
Linux使用ELF。
Mac OS(和iOS)使用Mach-O。
一些较旧的UNIX系统使用a.out。
juud5qan2#
二进制文件的结构由创建它的应用程序定义。例如,你用Java或C编写的代码,并将其写入文件,只能由知道其结构的代码读回。
在可执行文件的情况下,有不同的种类,这取决于操作系统。例如,要检查可执行文件和链接格式(ELF)文件的结构,请参见
man elf
:http://www.kernel.org/doc/man-pages/online/pages/man5/elf.5.htmlyiytaume3#
您需要了解什么是ELF文件!这是你的starting point。
这个article巧妙地解释了如何使用
readelf
和objdump
剖析ELF文件nc1teljy4#
这个article对可执行二进制文件做了一个非常容易理解的概述。