我已经尝试过这个方法,我用文本编辑器打开了一个a.out文件,但是我只看到一堆字符和一些指令,例如:
üÙ
。üÙ
。要查看代码的反汇编(包括操作码字节),但不包括任何文件头:
objdump -d a.aot
可执行文件有几种格式。对于Unix/Linux系统,它是ELF格式: http://en.wikipedia.org/wiki/Executable_and_Linkable_Format
对于Windows系统,它是PE格式: http://en.wikipedia.org/wiki/Portable_Executable
使用objdump工具查看操作码,正如其他人所指出的。
当你打开一个二进制文件时,你会看到一些无法识别的字符,原因是ASCII编码只使用了7位,因此所有代码点从128到255的字符都无法被编辑器识别,因此你会看到未知字符。
如果你想查看二进制文件的所有内容,你可以使用像hexdump、objdump和readelf这样的程序。例如,假设我们想将Linux(ELF)中的/bin/bash解析为十六进制表示的字节,那么我们可以输入:
hexdump /bin/bash
但是最好的工具是:readelf
如果我们想以比hexdump输出更易读的格式查看二进制文件的所有内容,我们只需输入:
readelf -a /bin/bash
然后我们就可以看到二进制文件的所有不同部分(ELF头、程序头、段头和数据)。
此外,使用其他标志,我们可以一次只查看一个头,或者只反汇编文件中的.text部分等。