如何查看可执行文件/目标文件中的0和1 / 机器码?

5
我已经尝试过这个方法,我用文本编辑器打开了一个a.out文件,但是我只看到一堆字符和一些指令,例如:

üÙ


可能是在终端中以二进制查看文件的重复问题。 - Ciro Santilli OurBigBook.com
5个回答

5
尝试使用 hexdump 命令。类似这样:
$ hexdump -X a.out

它会给你一个十六进制文件转储。

话虽如此,另一种可能性是使用GDB的反汇编命令


3

0

要查看代码的反汇编(包括操作码字节),但不包括任何文件头:

objdump -d a.aot

0

0

当你打开一个二进制文件时,你会看到一些无法识别的字符,原因是ASCII编码只使用了7位,因此所有代码点从128到255的字符都无法被编辑器识别,因此你会看到未知字符。

如果你想查看二进制文件的所有内容,你可以使用像hexdump、objdump和readelf这样的程序。例如,假设我们想将Linux(ELF)中的/bin/bash解析为十六进制表示的字节,那么我们可以输入:

hexdump /bin/bash

但是最好的工具是:readelf

如果我们想以比hexdump输出更易读的格式查看二进制文件的所有内容,我们只需输入:

readelf -a /bin/bash

然后我们就可以看到二进制文件的所有不同部分(ELF头、程序头、段头和数据)。

此外,使用其他标志,我们可以一次只查看一个头,或者只反汇编文件中的.text部分等。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接