OSX上的gdb无法识别32位未剥离的ELF

时间:2017-11-13 16:41:16

标签: macos gdb

这个gdb是通过我的OSX上的Homebrew安装的 我想知道为什么gdb不能在我的OSX上运行这个文件(我正在玩pwn),而我可以通过VirtualBox在Kali linux上运行它。 我看到有人提到" Apple版gdb",这是问题吗? 我该如何解决这个问题呢? 我搜索了很长一段时间的答案,甚至问我的教授,请帮我一把!

➜ file bof
bof: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), 
dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.24, 
BuildID[sha1]=ed643dfe8d026b7238d3033b0d0bcc499504f273, not stripped

➜ gdb bof
GNU gdb (GDB) 8.0
Copyright (C) 2017 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later
<http://gnu.org/licenses/gpl.html>
.
.
.
"/Users/me/Desktop/test/bof": not in executable format: File     format not recognized
(gdb)

1 个答案:

答案 0 :(得分:2)

  

这个gdb是通过我的OSX上的Homebrew安装的。

...

  

bof:ELF 32位LSB共享对象,Intel 80386,版本1(SYSV),   动态链接,解释器/lib/ld-linux.so.2,for GNU / Linux 2.6.24,

有很多方法可以配置gdb。默认情况下 - 如果您没有通过任何特殊选项进行配置 - 就是配置主机平台所需的内容。

在这种情况下,可能发生的事情是您的gdb配置为OSX - 意味着Mach-O而不是ELF - 因此gdb无法读取ELF文件。您可以通过在gdb提示符下键入set gnutarget <TAB> <TAB>来测试此理论(选项卡将导致完成,这是我知道列出此处编译内容的唯一方法)。或者,您可以尝试show configuration,但这只是说明了哪些选项传递给configure,因此需要解释。

摆脱这种情况的一种简单方法是使用--enable-targets=all重新配置。然后gdb也能够读取ELF文件和其他内容。