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

时间:2011-01-25 16:57:52

标签: binary executable reverse-engineering machine-code object-files

我已经尝试了这个,我用文本编辑器打开了一个a.out文件但是我只得到了一堆字符,里面有一些说明:

UU

5 个答案:

答案 0 :(得分:5)

试试hexdump。类似的东西:

$ hexdump -X a.out

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

话虽如此,另一种可能性可能包括使用GDB's disassemble command

答案 1 :(得分:3)

查找您当地的友好Hex Editor

答案 2 :(得分:0)

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

objdump -d a.aot

答案 3 :(得分:0)

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

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

使用objdump工具查看其他人指出的操作码

答案 4 :(得分:0)

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

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

hexdump / bin / bash

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

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

readelf -a / bin / bash

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

还使用其他标志,一次只能看到一个标头,也可以反汇编文件中的.text节,依此类推。