【问题标题】:Debugging an ELF file调试 ELF 文件
【发布时间】:2017-03-21 09:20:45
【问题描述】:

我有这个 EFL 文件,我需要对其进行调试/单步执行。这是一场逆向工程竞赛。我需要做的就是找出寄存器在特定时间点和特定地点的值。我使用 Hopper Disassembler 找出感兴趣的地址。

这就是问题所在。我不知道如何调试 ELF 文件。这是我第一次在 Linux 环境中调试。学习如何执行 ELF 文件本身花了我一段时间。我通过使用执行 ld-linux.so.2 ./[EFLFILE] [arguments]

有没有办法至少可以将调试器附加到进程上?我什至无法使用 ps 命令找到它。另外,我听说可以有远程调试器;在 windows 机器上运行调试器,并在 linux 上运行要检查的二进制文件。

谁能帮我实现这一切?

【问题讨论】:

  • 你可以使用gdb在linux下调试程序

标签: linux debugging reverse-engineering remote-debugging elf


【解决方案1】:

通常一个ELF文件可以这样执行:

$ /path/to/elffile [arguments]

要使用GDB 进行调试,您可以这样做:

$ gdb /path/to/elffile

或传递参数:

$ gdb --args /path/to/elffile arguments...

在你的情况下:

$ gdb --args ./[EFLFILE] [arguments]

然后输入run 或简单的r 并按。 输入 help 以获取有关 gdb 命令的帮助。

注意:如果您的程序需要一些外部库,在运行它之前,您应该定义 LD_LIBRARY_PATH 指向包含这些库的文件夹 (export LD_LIBRARY_PATH=/the/path/to/libs)

【讨论】:

  • 无论我做什么,我都无法通过 '$[filename]' 执行 ELF 文件,当我尝试使用 gdb 时,我不断收到消息“找不到命令 [filename]”您建议(“在您的情况下”中的行),即使在使用 sudo 之后,我也会收到 Permission denied。我正在使用最新的 ubuntu。
  • 我认为这是因为它是 64 位 ubuntu 安装上的 32 位 ELF。我将运行一个 32 位系统并尝试相同的方法。
  • @hexinx 如果您的权限被拒绝,请确保您的文件具有执行权限$ chmod +x elffile,但是如果您不能在独立的二进制文件中运行,gdb 将无法工作
  • 您可以使用$ file elffile检查您的程序是哪种二进制(32/64位)
猜你喜欢
  • 1970-01-01
  • 2021-05-13
  • 2018-02-22
  • 2012-07-19
  • 2011-03-16
  • 1970-01-01
  • 1970-01-01
  • 2023-03-15
  • 1970-01-01
相关资源
最近更新 更多