【问题标题】:How can I see the 0s and 1s / machine code from a executable file / object file?如何从可执行文件/目标文件中查看 0 和 1/机器代码?
【发布时间】:2023-03-24 19:04:01
【问题描述】:

我已经尝试过了,我用文本编辑器打开了一个 a.out 文件,但我只得到一堆字符,其中包含一些指令,例如:

üÙ

【问题讨论】:

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


【解决方案1】:

试试hexdump。比如:

$ hexdump -X a.out

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

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

【讨论】:

    【解决方案2】:

    查找您当地的朋友Hex Editor

    【讨论】:

      【解决方案3】:

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

      objdump -d a.aot
      

      【讨论】:

        【解决方案4】:

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

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

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

        【讨论】:

          【解决方案5】:

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

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

          hexdump /bin/bash

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

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

          readelf -a /bin/bash

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

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2010-12-23
            • 2021-10-08
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-03-12
            • 1970-01-01
            相关资源
            最近更新 更多