5

我已经试过了,我用文本编辑器打开了一个 a.out 文件,但我只得到一堆字符,里面有一些指令,比如:

üÙ

4

5 回答 5

5

试试hexdump。就像是:

$ hexdump -X a.out

它只会为您提供:文件的十六进制转储。

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

于 2011-01-25T17:01:10.933 回答
3

查找本地友好的十六进制编辑器

于 2011-01-25T17:02:28.937 回答
0

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

objdump -d a.aot
于 2011-01-25T17:07:39.980 回答
0

可执行文件有多种格式。对于 Unix/Linux,它是 ELF: http ://en.wikipedia.org/wiki/Executable_and_Linkable_Format

对于 Windows,它是 PE: http ://en.wikipedia.org/wiki/Portable_Executable

正如其他人指出的那样,使用 objdump 工具查看操作码

于 2011-01-25T17:19:30.180 回答
0

当您打开二进制文件时,您会看到不可读的字符,原因是 ascii 编码使用 7 bits ,因此编辑器无法识别代码点为 128 到 255 的所有字符,因此您会看到未知字符。

如果您想查看二进制文件的所有内容,可以使用 hexdump、objdump 和 readelf 等程序,例如,假设我们想将 /bin/bash 作为 linux(elf) 中的二进制文件分解为十六进制字节表示,所以我们说:

十六进制转储/bin/bash

但这类文件的最佳工具是:readelf

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

readelf -a /bin/bash

我们会看到二进制文件的所有不同部分(elf 头、程序头、节头和数据)。

同样使用其他标志,我们一次只能看到一个标题,或者我们可以只反汇编文件中的 .text 部分等等。

于 2020-09-08T21:27:39.140 回答