Сервер Frida
Что такое Frida?
Frida — это набор инструментов для динамического кода. Позволяет легко внедрять собственный код в другие приложения.
Frida умеет работать с приложениями, написанными для всех популярных ОС, включая Windows, Linux, macOS, iOS и даже QNX.
Мы же будем использовать ее для модификации приложений под Android.
Как открыть Frida Toolkit?
В левом верхнем углу приложения на панели находим Инструменты → в самом низу Frida toolkit.
Описание доступных окон.
Устройства (1):
Список всех устройств, подключенных через ADB. Он автоматически обновляется при подключении/отключении новых устройств или эмуляторов.
В версии ZennoDroid Enterprise можно переключаться между разными устройствами, при этом в остальных версиях работа возможна только с запущенным в основном окне эмулятором.
Доступные кнопки:
- Обновить. Принудительно обновляет список устройств.
- Запустить frida. Запускает сервер Frida на устройстве. После нажатия необходимо дождаться уведомления в информационном окне «Сервер запущен». При первом запуске происходит автоматическая установка сервера на устройство, что занимает некоторое время (~5-10 сек).
- Остановить frida. Останавливает сервер, но не удаляет его, поэтому последующие запуски будут происходить значительно быстрее, чем в первый раз.
Приложения (2):
Здесь выводится список всех установленных приложений, для которых есть возможность запуска. Приложения, которые нельзя запустить (без стартовых activity), не отображаются в списке.
Категории:
- Id. Тут можно посмотреть уникальный идентификатор приложения (package name).
- Название. Понятное название приложения, которое обычно отображается на иконке.
Доступные кнопки:
- Обновить. Нажав на нее, можно обновить список приложений. Ее необходимо использовать после установки или удаления приложений.
- Активное. После нажатия в таблице будет выбрано приложение, которое в данный момент отображается на экране устройства.
- Запустить. Эта кнопка запускает выбранное приложение и автоматически подключается к его процессу. Если приложение уже было запущено, оно будет остановлено, а затем запущено заново.
- Возобновить. Снимает с паузы приложение, которое ранее было приостановлено.
Процессы (3):
Здесь можно посмотреть все запущенные процессы на устройстве.
Категории:
- Pid. Идентификатор процесса (Process id).
- Название. Имя процесса. Так как к одному приложению могут относиться несколько процессов,
то их названия обычно содержат уточнения. Например, com.android.settings дает нам понять,
что речь идет о Настройках.
Доступные кнопки:
- Обновить. Нажав на нее, можно обновить список текущих процессов. Необходимо использовать после запуска или остановки приложений.
- Самый верхний. В таблице будет выбран основной процесс приложения, которое отображается на экране устройства.
- Подключить. Подключается к выбранному процессу. После этого становятся доступными операции создания и загрузки скрипта.
- Отключиться. Отключается от процесса. Если приложение завершило работу, то отключение от процесса произойдет автоматически.
Скрипт (4):
Окно работы со скриптом. Поддерживаются макросы.
Доступные кнопки:
- Выбрать. Открывает форму загрузки файлов. Файл скрипта должен иметь расширение .js
- Сохранить. Сохранение содержимого окна в файл с расширением .js
- Создать. Компиляция скрипта. Если скрипт содержит ошибки, то в окно информации будет выдано соответствующее уведомление. Ошибки на данном этапе обычно связаны с неправильным синтаксисом.
(Действие становится активным после подключения к процессу приложения.) - Загрузить. Непосредственная загрузка скрипта. Если скрипт содержит ошибки, то в окно информации будет выдано соответствующее уведомление. Ошибки на данном этапе обычно связаны непосредственно с выполнением скрипта, например, из-за отсутствия в коде приложения нужного класса.
(Действие становится активным толь ко после успешного выполнения кнопки Создать.) - Выгрузить. Выгружает скрипт. Он также выгружается автоматически при завершении процесса приложения.
Информация (5):
В это окно выводится различная служебная информация и сообщения, возникающие в процессе выполнения скрипта, а также ошибки и т.д.
Горячие клавиши:
- (Ctrl + C). Скопировать выделенные сообщения.
- (Del). Удалить выделенные сообщения.
- (Ctrl + Del). Удалить все сообщения.
Как проверить, что сервер Frida запустился и работает?
- Нажать кнопку «Запустить frida» и дождаться уведомления в информационном окне: «Сервер запущен».
- На панели Процессы нажать «Самый верхний». После этого будет выбран активный процесс.
- Нажать «Подключиться».
- На панели Скрипт ввести код:
console.log('Hello, World!');
- Нажать «Создать», а потом «Загрузить».
- Если все прошло успешно, то в информационном окне появится сообщение:
["type":"log","level":"info","payload":"Hello, World!"]
- После этого можно нажать «Выгрузить». Сервер Frida работает!