我有一个与夺旗赛(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 二进制文件