. В этой статье мы рассмотрим, как можно использовать iNalyzer для выполнения динамического анализа IOS-приложений.
Автор: Пратик Джианчандани (Prateek Gianchandani)
В предыдущей статье мы рассматривали статический анализ IOS-приложений при помощи iNalyzer. В этой статье мы рассмотрим, как можно использовать iNalyzer для выполнения динамического анализа IOS-приложений. Во время динамического анализа мы можем вызывать любые методы во время выполнения приложения, находить значения конкретного экземпляра переменной в любой момент времени и, по сути, делать все то, что мы делали в Cycript.
В предыдущей статье мы сгенерировали html файлы при помощи Doxygen, а затем открывали их для просмотра информации о классах и другой информации о приложении. Для динамического анализа мы будем использовать Firefox, поскольку разработчик рекомендовал мне использовать именно этот браузер, так как в других могут возникать ошибки. Хотя, кажется, все работает неплохо и в Crome.
Для запуска интерпретатора, позволяющего выполнять динамический анализ, откройте файл index.html, сгенерированный Doxygen, для приложения, которое вы хотите проанализировать, а затем дважды нажмите на кнопку на клавиатуре с левой стрелкой.
Рисунок 1: Консоль, появляющаяся после двойного нажатия на кнопку с левой стрелкой
После двойного нажатия на кнопку с левой стрелкой вы увидите консоль, которая появилась в верхней части экрана (см. рисунок выше), где вы можете вводить команды. Для начала необходимо сообщить iNalyzer ip-адрес вашего устройства (ip-адрес моего устройства 10.0.1.23). После ввода ip-адреса в командной строке нажимаем Enter.
Рисунок 2: Установка ip-адреса устройства
После установки ip-адреса, убедитесь в том, что анализируемое приложение открыто (то есть находится на переднем плане), а ваше устройство не в спящем режиме. Это важно, поскольку если приложение находится в фоновом режиме или само устройство находится в спящем режиме, работа приложение временно приостановлена операционной системой и, следовательно, вы не сможете выполнить динамический анализ.
Как только приложение открыто, вы можете вводить любые команды в консоли, как вы это делали в Cycript.
Рисунок 3: Результат выполнения команды UIApp
Как видно из рисунка выше, мы получили ответ при вводе команды. Мы можем вводить любую из команд, которые мы использовали в Cycript.
Давайте скроем панель статуса в приложении. Это можно сделать, если ввести команду [[UIApplication sharedApplication] setStatusBarHidden:YES animated:YES];
Рисунок 4: Ввод команды для сокрытия панели статуса в приложении
Как видно из рисунка выше, мы не получили никакого ответа, поскольку метод возвращает тип void.
Однако команда выполнилась, и панель статуса исчезла (обратите внимание, в верхней части экрана больше не показывается время).
Рисунок 5: Внешний вид приложения после сокрытия панели статуса
Схожим образом можно найти делегированный класс (delegate class) этого приложения.
Рисунок 6: Результат выполнения команды для поиска делегированного класса
Мы также можем установить число (например, 9000), показываемое на иконке приложения, (icon badge number).
Рисунок 7: Установка числа, показываемого на иконке приложения
Команда сработала (см. рисунок ниже).
Рисунок 8: Внешний вид иконки приложения после ввода команды
Поскольку консоль в iNalyzer представляет собой точную копию консоли в Cycript, мы можем вводить код на javascript и любую другую команду из документации на Cycript. Я ввел команду со страницы, где показаны различные трюки с Cycript.
Рисунок 9: Результат выполнения еще одной команды
Также я могу создать новую функцию, используя сочетание синтаксиса Objective-C и javascript. Если вы не знакомы с Cycript, рекомендую вам обратить к предыдущим статьям этой серии, где я детально рассказывал об этой утилите.
Рисунок 10: Объявление новой функции
Теперь я могу вызывать только что созданный метод в любое время.
Рисунок 11: Вызов ранее созданного метода
В девятой статье этой серии мы обсуждали утилиту Snoop-it, которая очень похожа на iNalyzer. Хотя у каждой из этих утилит есть свои преимущества и недостатки. На момент написания статьи Snoop-it не позволял реализовать технику method swizzling, а в iNalyzer это можно сделать. С другой стороны в iNalyzer нет возможности мониторинга api-вызовов, а Snoop-it такая возможность есть.
Заключение
В этой статье мы рассматривали, как использовать всю мощь iNalyzer для выполнения динамического анализа IOS-приложений. iNalyzer – прекрасный инструмент, который должен быть в арсенале любого, кто интересуется безопасностью IOS-приложений, поскольку позволяет выполнять все задачи быстрее и эффективнее.
Ссылки