【问题标题】:How to see the instructions inside of compiled language executable files?如何查看编译语言可执行文件中的指令?
【发布时间】:2020-01-20 05:10:16
【问题描述】:

当我编译 C/C++ 源文件时,编译器会生成另一个可执行文件。如何查看该文件的说明?这个过程被称为什么?

gcc hello.c -o hello
./hello

这里,在执行第一行之后的第一个文件名“hello”被生成。我需要查看这个“hello”文件的说明。

【问题讨论】:

  • 反汇编?反编译?逆向工程?盯着无法破译的十六进制墙?
  • 假设,我有一个名为 hello.c 的文件,编译这个文件后我得到了 a.out,现在我想看看 a.out 文件中有什么
  • 在任何编辑器中打开它,您将看到它的内容。虽然我猜这不是你想要的。那么你想从文件中得到什么确切的格式和信息呢?原始源代码?组装说明? ELF部分?原始二进制值?等
  • 如果我执行这个文件,我会得到一些输出。所以,'a.out' 文件中必须有一些指令引导我的机器向我显示输出。我需要看看那些说明。
  • 那听起来你想反汇编代码。在 Linux 上你可以这样做:objdump -d a.out。阅读objdump 手册,了解更多选项来准确控制转储的输出。

标签: c executable


【解决方案1】:

可执行的 a.out 文件是二进制格式。 您可以在任何文本编辑器(例如:vi、vim 等)或十六进制编辑器中打开它,但您将无法理解其中的内容。

您可以使用一些命令来获取有关可执行文件中包含的内容的更多信息。 一些示例命令是:nm、strings、objdump

例子:

$ nm a.out
$ strings a.out
$ objdump -xD --demangle a.out

阅读他们的手册以了解更多信息

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-16
    • 1970-01-01
    相关资源
    最近更新 更多