9

У меня есть вопрос, связанный с CTF, и мне было интересно, если кто-то может указать мне правильное направление.

Я работаю над OSX Yosemite, и у меня были некоторые военные игры и старые вызовы CTF. Моя цель - выполнить двоичный файл ELF запроса "изначально" в мой итерм (после того, как я проверю его локально), хотя я понимаю, что базовая система может выполнять только двоичные файлы MACH.

Тем не менее, возможна ли такая вещь посредством эмуляции (например, QEMU) или любым другим способом, чтобы избежать открытия целой виртуальной машины только для запуска двоичного файла?

Заранее спасибо.

2 ответа2

2

Сам по себе бинарные файлы ELF ничего не значат. Несколько бинарных файлов работают в одиночку - вам потребуется поддержка библиотек, API-интерфейсов, ABI и других полезных вещей.

При работе с QEMU вам все еще нужна большая часть ОС - только то, что она не так тесно связана с хост-системой, которую я подозреваю.

Теоретически, если у вас есть что-то вроде 'wine', но вы действуете как linux(или другая ОС * nix syle) -> уровень совместимости с OS X, вы можете получить то, что хотите, но такого зверя не существует.

Так что нет, вы не можете запустить произвольный, предварительно скомпилированный бинарный файл ELF в OS X

2

Вероятно, ответ таков: зависит от того, как был создан файл ELF.

На основании этой статьи и этого предложения:

  • Распространенным заблуждением является то, что файлы ELF предназначены только для исполняемых файлов ...
  • Мы уже видели, что они могут быть использованы для частичных частей ...

Не все файлы ELF будут выполнены, даже если у вас есть правильная настройка.

Основываясь на этой статье, существует группа файлов ELF под названием FatELF:

  • FatELF - это формат файла, который встраивает в один файл несколько двоичных файлов ELF для разных архитектур.
  • Поставьте один файл, который работает в Linux и FreeBSD

На основе этой страницы от Apple

  • Часть BSD ядра OS X в основном основана на FreeBSD

Итак, для Mac OS X FatELF - это "начало ответа".

И наконец, основываясь на этой странице:

Конвертер объектных файлов

Эта утилита может использоваться для преобразования объектных файлов между форматами COFF/PE, OMF, ELF и Mach-O для всех 32-разрядных и 64-разрядных платформ x86. Может изменять имена символов в объектных файлах. Может создавать, изменять и конвертировать библиотеки функций на разных платформах. Может дамп объектных файлов и исполняемых файлов. Также включает в себя очень хороший дизассемблер, поддерживающий наборы инструкций SSE4, AVX, AVX2, AVX512, FMA3, FMA4, XOP и Knights Corner. Исходный код включен (GPL).

У вас есть возможность активировать то, что вы хотите.

PS: есть еще одна страница о XBinary, я не анализировал ее.

В этом документе обсуждается XBinary, новое программное обеспечение, которое позволяет добавлять поддержку уровня ядра для выполнения файлов в произвольных двоичных форматах в Mac OS X

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .