Расшифровка исполняемого файла iPhone (MACH-O) - PullRequest
5 голосов
/ 24 октября 2011

Я поигрался с / отладкой / разборкой двоичных файлов на iPhone.

Первое препятствие заключается в том, что двоичные файлы зашифрованы, и распространитель не может их прочитать.Этого можно избежать, выгрузив содержимое дешифрованного файла из gdb.

Мой вопрос касается дешифрования двоичных файлов (которое выполняется на лету при запуске программы) для всех исполняемых файлов MACH-O, которые имеют encryption_id в LC_ENCRYPTION_INFOраздел, установленный на 1.

  1. есть ли инструмент, который расшифровывает файлы для вас?Любые рекомендации?
  2. есть ли информация о том, как этот процесс работает?Видимо это шифрование AES?Какой ключ используется?Легко ли копировать с вашей собственной программой?

Спасибо за любые указатели!

1 Ответ

7 голосов
/ 25 августа 2012

Этические вопросы о взломе / взломе и т. Д., Давайте обсудим детали:

  • В OS X двоичная расшифровка выполняется с помощью Don't Steal MacOS X.Kext (нежно известный как DSMOS).
  • В iOS двоичная расшифровка выполняется FairPlay kext.

    В обоих случаях за это отвечает загрузчик Mach-O ядра.Если вам действительно нужно вдаваться в подробности, именно дешифрование выполняет пейджер Apple Protect.На языке XNU «пейджер» - это компонент, который отвечает за взятие страниц ВМ и извлечение их из резервного хранилища (подкачка, файл с отображенной памятью и т. Д.).Это Apple Protect Pager, который вызывает kext (один из двух приведенных выше)

    Есть отличная книга, посвященная особенностям ядра - http://www.amazon.com/Mac-OS-iOS-Internals-Apples/dp/1118057651

    Как вы правильно сказали, это шифрование легкопобежден - на взломанном устройстве (или ПК с привилегиями root) вы можете использовать API-интерфейсы Mach VM для чтения дешифрованного образа.Это на самом деле упомянуто в вышеприведенной книге, с примером инструмента для этого (среди других приемов виртуальной машины).В качестве альтернативы, у Стефана Эссера есть простой инструмент, который расшифровывает двоичные файлы, вставляя простой .dylib в адресное пространство процесса при загрузке, используя DYLD_INSERT_LIBRARIES.github.com ›stefanesser› dumpdecrypted.

надеюсь, это поможет

TG

...