GDB на устройстве iphone не останавливается на точках останова - PullRequest
3 голосов
/ 21 февраля 2012

Я отлаживаю приложение для iPhone без таблицы символов.Устройство взломано, и я подключаю gdb локально к устройству, передав pid (запуск приложения в gdb, похоже, не работает на iOS 5).Ни одна из установленных мной точек останова не срабатывает.Я установил точки останова на смещения, которые у меня есть из дампа класса, но я предполагаю, что они не получают удар из-за ASLR в iOS 5.

Я попытался удалить флаг MH_PIE, используя скрипт здесь http://src.chromium.org/viewvc/chrome/trunk/src/build/mac/change_mach_o_flags.py?view=markup и otool показывает, что было сделано правильно.Однако после изменения приложение больше не запускается.

Я неправильно установил контрольные точки или это связано с ASLR?Если это рандомизация, то как мне эффективно отключить ее на устройстве?

Ответы [ 2 ]

1 голос
/ 17 апреля 2013

Если все, что вам нужно сделать, это отладить приложение с помощью GDB, то отключение ASLR с помощью флага MH_PIE вполне подойдет. Так как эта программа исправляет двоичный файл, вам нужно будет закрыть приложение. Используя программу под названием ldid (из пакета под названием «Link Identity Editor» в Cydia), вы можете псевдокодировать приложение.

root# cd /var/mobile/Applications/*/Example.app/
root# mach_flags --no-pie Example
root# ldid -s Example
root# gdb
(gdb) attach -waitfor Example

Затем просто нажмите значок приложения. Приложение будет зависать. С этого момента вернитесь в GDB, и он должен быть загружен. Теперь просто установите свои контрольные точки с помощью b *0x<address>, и вы можете полностью игнорировать ASLR, поскольку он отключен.

0 голосов
/ 07 марта 2013

Я тоже застрял с этим.Нет простого решения, которое я могу найти, лучший обходной путь, который я нашел, - это использовать файл assert.h и использовать его повсюду.

Обновление:

Вы правы.Я думал о том, чтобы иметь собственный источник.Однако у gdb на взломанных iOS-устройствах есть известная проблема, связанная с отсутствием точек останова.Я обсуждал этот вопрос с теми, кто изначально принес Gdb Cydia, и они порекомендовали мне попытаться решить проблему самостоятельно.Без какого-либо свободного времени для этого я сейчас отказался.

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

Я не пытался ответить на вопрос встороны, и поэтому я действительно заслуживаю понижения.Но информация должна быть там вне зависимости.

...