【问题标题】:Using GDB Debugger to See Hidden Code使用 GDB 调试器查看隐藏代码
【发布时间】:2017-03-27 15:31:21
【问题描述】:

我收到了一个包含嵌入式 C 代码的二进制文件,当我在 GDB GCC 调试器中运行它时看不到它。我想C代码已经被二进制代码的编译/形成隐藏了。我尝试了以下方法:

gdb> 文件 myFile gdb> 列出主目录

我得到的输出是:

myFile.c: 没有这样的文件或目录

我知道这个二进制文件中有用 C 语言编写的代码。当我输入 ./myFile

时可执行文件运行

我已经安装了 32 位库,因为这是这种情况所需要的,并且我正在运行 Ubuntu 16.04

感谢任何帮助。

【问题讨论】:

  • 原始源代码未嵌入二进制文件中。您需要在某处复制源代码树并将 GDB 指向它以查看它。也就是说,如果您还没有源代码,不要指望 GDB 能够神奇地为您生成它。
  • 谢谢。我不知道源代码树的副本。有没有办法找到这个?我不熟悉它,但我现在会研究它。
  • 源代码的作者必须将其提供给您。这不是任何人都可以根据可用信息为您回答的问题。
  • 这个二进制文件中没有C代码。
  • 谢谢 immibis。文件中肯定有 C 代码。我在我的帖子中说过。我知道正如 kaylum 所解释的那样,我无法使用它。

标签: c linux debugging gdb reverse-engineering


【解决方案1】:

可能是编译问题。尝试查看option进行调试

$ gcc -g myFile.c -o myFile
$ gdb myFile
(gdb) list main

如果您在没有"-g" 选项的情况下进行编译,调试器将永远不会向您显示 C 代码,而只会显示汇编代码。

在你的情况下,如果你运行这些命令,你会看到反汇编代码

(gdb) info file

然后取入口点的地址

Entry point: 0x(address)

用于显示反汇编代码

(gdb) break 0x(address)
(gdb) run

当断点被捕获时

(gdb) x/20i $pc

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-13
    • 2013-01-07
    • 2011-09-14
    • 2011-11-25
    • 2015-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多