在 Mac OS X 中执行 ELF 二进制文件

在 Mac OS X 中执行 ELF 二进制文件

我有一个与夺旗赛(CTF)相关的问题,想知道是否有人可以给我指明正确的方向。

我在 Mac OS X Yosemite 上工作,并且参加了一些战争游戏和较早的夺旗 (CTF) 挑战。我的目标是将挑战的 ELF 二进制文件“本地”执行到我的 iterm 中(在我将其 scp 到本地之后),尽管我意识到底层系统只能执行 MACH 二进制文件。

尽管如此,是否可以通过模拟(例如 QEMU)或任何其他方法实现这样的事情,以避免仅仅为了运行二进制文件而打开整个虚拟机?

答案1

答案很可能是:取决于 ELF 文件是如何生成的。

基于此文章,还有这句话:

  • 一个常见的误解是 ELF 文件仅用于可执行文件......
  • 我们已经看到它们可以用于部分件...

即使您有正确的设置,也不是所有的 ELF 文件都会被执行。

基于此文章,有一组名为 FatELF 的 ELF 文件:

  • FatELF 是一种文件格式,它将不同架构的多个 ELF 二进制文件嵌入到一个文件中
  • 发送一个可在 Linux 和 FreeBSD 上运行的文件

基于此来自 Apple 的页面

  • OS X 内核的 BSD 部分主要源自 FreeBSD

所以,对于 Mac OS X 来说,FatELF 是“答案的开始”。

最后,基于此

目标文件转换器

该实用程序可用于在 COFF/PE、OMF 之间转换目标文件,极低频以及适用于所有 32 位和 64 位 x86 平台的 Mach-O 格式。可以修改目标文件中的符号名称。可以跨平台构建、修改和转换函数库。。可以转储目标文件和可执行文件。还包括一个非常好的反汇编程序,支持 SSE4、AVX、AVX2、AVX512、FMA3、FMA4、XOP 和 Knights Corner 指令集。包含源代码(GPL)。

您有机会实现您想要实现的事情。

PS:还有另外关于 XBinary 的页面,我没分析过。

本文档讨论了 XBinary,这是一款新软件,可让您添加内核级支持,以便在 Mac OS X 上执行任意二进制格式的文件

答案2

ELF 二进制文件本身毫无意义。很少有二进制文件可以单独运行 - 您需要支持库、API 和 ABI 以及其他有用的功能。

运行 QEMU 时,您仍然需要大部分操作系统 - 只是我怀疑它与主机系统的联系并不紧密。

理论上,如果你有类似 'wine' 的东西,但充当 linux(或其他 *nix 风格的操作系统)-> OS X 兼容层,你可以得到你想要的,但是这样的野兽并不存在。

所以你不能在 OS X 上运行任意的、预编译的 ELF 二进制文件

相关内容