Macos OSX上的gdb无法识别32位非压缩ELF

Macos OSX上的gdb无法识别32位非压缩ELF,macos,gdb,Macos,Gdb,此gdb是通过自制在我的OSX上安装的。 我想知道为什么gdb不能在我的OSX上处理这个文件(我在玩pwn),而我可以通过VirtualBox在Kali linux上运行它。 我看到有人提到“苹果版gdb”,这就是问题所在吗? 我该如何解决这个问题? 我找了好一阵子才找到答案,甚至还问我的教授:“请帮帮我!” ➜ file bof bof: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically link

此gdb是通过自制在我的OSX上安装的。
我想知道为什么gdb不能在我的OSX上处理这个文件(我在玩pwn),而我可以通过VirtualBox在Kali linux上运行它。 我看到有人提到“苹果版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)
➜ 锉刀转炉
bof:ELF 32位LSB共享对象,英特尔80386,版本1(SYSV),
动态链接的解释器/lib/ld linux.so.2,对于GNU/linux 2.6.24,
BuildID[sha1]=ed643dfe8d026b7238d3033b0d0bcc499504f273,未剥离
➜ gdb转炉
GNU gdb(gdb)8.0
版权所有(C)2017免费软件基金会。
许可证GPLv3+:GNU GPL版本3或更高版本
.
.
.
“/Users/me/Desktop/test/bof”:非可执行格式:无法识别文件格式
(gdb)
此gdb是通过自制在我的OSX上安装的

bof:ELF 32位LSB共享对象,英特尔80386,版本1(SYSV), 动态链接的解释器/lib/ld linux.so.2,对于GNU/linux 2.6.24

有许多方法可以配置gdb。默认情况下——如果您没有传递任何特殊选项进行配置——是在主机平台所需的环境中进行配置

在本例中,可能发生的情况是,您的gdb是为OSX配置的——这意味着Mach-O而不是ELF——因此gdb无法读取ELF文件。您可以通过在gdb提示符下键入
setgnutarget
来测试这一理论(选项卡将导致完成,这是我所知道的在这里列出编译内容的唯一方法)。或者,您也可以尝试
showconfiguration
,不过这只是说明传递给
configure
的选项,因此需要解释

解决此问题的一个简单方法是使用
--enable targets=all
重新配置。然后gdb将能够读取ELF文件和其他内容

此gdb是通过自制在我的OSX上安装的

bof:ELF 32位LSB共享对象,英特尔80386,版本1(SYSV), 动态链接的解释器/lib/ld linux.so.2,对于GNU/linux 2.6.24

有许多方法可以配置gdb。默认情况下——如果您没有传递任何特殊选项进行配置——是在主机平台所需的环境中进行配置

在本例中,可能发生的情况是,您的gdb是为OSX配置的——这意味着Mach-O而不是ELF——因此gdb无法读取ELF文件。您可以通过在gdb提示符下键入
setgnutarget
来测试这一理论(选项卡将导致完成,这是我所知道的在这里列出编译内容的唯一方法)。或者,您也可以尝试
showconfiguration
,不过这只是说明传递给
configure
的选项,因此需要解释

解决此问题的一个简单方法是使用
--enable targets=all
重新配置。然后gdb将能够读取ELF文件和其他内容