- PVSM.RU - https://www.pvsm.ru -
В этой статье дается простая короткая инструкция как пропатчить third-party приложение под iOS что бы отключить ASLR при отладке. Предполагается что у читателя в наличии
Что ж, приступим.
Для начала выберем исполняемый файл, в который мы будем отлаживать и в котором нам нужно отключить ASLR. Пусть это будет демон /usr/sbin/absd
, отвечающий за авторизацию в некоторых сервисах Apple. Конечно absd
тут исключительно для примера, на самом деле можно взять любой исполняемый файл.
Используем scp
для того что бы скопировать наш исполняемый файл на компьютер (здесь и далее 192.168.1.112
— это IP адрес нашего iOS устройства):
$ scp root@192.168.1.112:/usr/sbin/absd ./
WARNING! Перед тем как что-то делать с absd, обязательно сохраните где-нибудь копию!
Затем воспользуемся утилитой codesign
из XCode и извлечем из нашего исполняемого файла plist со списком entitlements [3] (не знаю как это по-русски, может «список прав»?):
$ codesign -d --entitlements - absd > absd.entitlements
После этого открываем исполняемый файл в MachOView и находим Mach-заголовок для интересующей нас архитектуры. В случае fat binary таких заголовков будет несколько — по одному на каждую архитектуру, случае если у нас не fat binary — заголовок будет всего один. В заголовке найдите флаг MH_PIE
и запомните соответствующее смещение. В MachOView все это выглядит он вот так:
Флаг нужно сбросить, но в MachOView это сделать нельзя, поэтому откроем исполняемый файл в любом HEX-редакторе, перейдем по соответствующему смещению и сбросим флаг. Потом переподпишем исполняемый файл с сохраненными entitlements:
$ codesign -s - --entitlements absd.entitlements -f absd
и скопируем его обратно на устройство
$ scp ./absd root@192.168.1.112:/usr/sbin/absd
Вот собственно и все. Теперь если вызвать демона — например авторизировавшись в iMessage, — и загнать его под отладку в lldb, мы увидим
(если вы сидите на gdb вместо lldb, используйте соответствующие команды [4]). Как видим из скриншота, никакого больше ASLR! Вот собственно и вся инструкция — простая и короткая, как я и обещал в начале статьи.
Happy debugging!
Автор: dimakovalenko
Источник [5]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/ios/68294
Ссылки в тексте:
[1] evasi0n jailbreak: http://evasi0n.com/
[2] МаchOView: http://sourceforge.net/projects/machoview/
[3] entitlements: https://developer.apple.com/library/mac/documentation/Miscellaneous/Reference/EntitlementKeyReference/Chapters/AboutEntitlements.html
[4] соответствующие команды: http://lldb.llvm.org/lldb-gdb.html
[5] Источник: http://habrahabr.ru/post/210858/
Нажмите здесь для печати.