2013-06-15 1 views
2

Я пытаюсь найти постоянную (что-то вроде секретного токена) из приложения iOS, чтобы создать приложение с использованием недокументированного веб-API (кстати, m не во что-то незаконное). Пока у меня есть расшифрованный исполняемый файл приложения на моем Mac (джейлбрейк + SSH + демпинг, дешифрованный исполняемый файл как файл). Я могу использовать команду strings для получения читаемого списка строк, и я могу использовать средство dump класса (http://stevenygard.com/projects/class-dump/), чтобы получить список определений интерфейсов (заголовков) классов. Хотя это дает мне представление о внутренней работе приложения, я все еще не могу найти то, что искал: константы, которые я ищу. В командной строке строк имеется буквально тысячи определений строк. Есть ли способ сбрасывать строки таким образом, чтобы я мог иметь имена констант NSString со своими значениями. Мне не нужны детали реализации методов, я знаю, что он скомпилирован, и все, что я могу получить, - это код сборки. Но если я могу получить имена строковых констант (как в дампах строк, так и в дампе класса), а также в строковых значениях (в дампах строк), я думаю, что может быть способ связать их вместе.Поиск констант из дешифрованного исполняемого файла приложения iOS

Спасибо,

Can.

ответ

2

К сожалению, нет, если нет какого-либо инструмента черной магии, о котором я не знаю, или если исполняемый файл не был создан с помощью отладочных символов (что, вероятно, не так). Если есть отладочные символы, вы можете запустить его через отладчик и получить имена переменных.

Во время компиляции, компилятор удаляет имя константы, и заменяет все вхождения константы в коде с адресом его местоположения в памяти (что обычно то же смещение в байтах, как внутри исполняемого файла). Из-за этого исходная переменная именования константы теряется, оставляя только значение. Следовательно, причина, по которой вы не можете найти константы в любом месте.

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

Удачи вам! RE может быть очень полезным, но иногда это действительно отстой.

+0

Токен (должен быть) где-то там, в исполняемом файле, поскольку вызовы API содержат подпись, которая хэшируется с некоторыми другими переменными (она использует сервис amazon aws, но, к сожалению, это только одна часть работы). если я не могу получить постоянное имя, я могу, по крайней мере, получить метод objc с какой переменной (даже если я не знаю имя), этого будет достаточно, потому что я сосредоточен на конкретном метод, который я знаю, имя (и я вижу этот метод после дампа заголовка), логически я должен узнать, когда его вызвали с помощью правильных инструментов. –

+0

@ canpoyrazoğlu Да, токен находится где-то в исполняемом файле. Вы на правильном пути, охотясь за именами методов, которые его используют. Основываясь на вашем вопросе и ссылке на класс-дам Стива Найгарда, я бы предположил, что у вас есть список всех имен методов? –

+0

Да, я (поверю), что у меня есть все они как объективные заголовки класса класса. теперь я использую cycript ana inalyzer, чтобы подключиться к рабочему приложению, чтобы узнать токен. –

Смежные вопросы