在 OSX 中执行 ELF 二进制文件

nil*_*nus 12 macos

我有一个与 CTF 相关的问题,我想知道是否有人可以指出我正确的方向。

我在 OSX Yosemite 上工作,我正在经历一些兵棋推演和旧的 CTF 挑战。我的目标是在我的 iterm 中“本地”执行挑战的 ELF 二进制文件(在我本地 scp 之后),尽管我意识到底层系统只能执行 MACH 二进制文件。

然而,为了避免为了运行二进制文件而打开整个 VM,是否可以通过仿真(例如 QEMU)或任何其他方法来实现这样的事情?

先感谢您。

rma*_*ess 5

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

基于这篇文章和这句话:

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

即使您进行了正确的设置,也并非所有 ELF 文件都会被执行。

基于这篇文章,有一组名为 FatELF 的 pf ELF 文件:

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

基于Apple 的此页面

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

因此,对于 Mac OS X,FatELF 是“答案的开始”。

最后,基于此页面

目标文件转换器

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

你有机会去做你想做的事。

PS:还有一个关于 XBinary 的页面,我没有分析它。

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


Jou*_*eek 2

ELF 二进制文件本身没有任何意义。很少有二进制文件可以单独运行 - 您需要支持库、API 和 ABI 以及其他闪亮的东西。

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

理论上,如果你有类似“wine”的东西,但充当 linux(或其他 *nix syle OS)-> OS X 兼容层,你可以获得你想要的东西,但这样的野兽并不存在。

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