Перейти к основному содержимому

Сервер Frida

Что такое Frida?

Frida — это набор инструментов для динамического кода. Позволяет легко внедрять собственный код в другие приложения.
Frida умеет работать с приложениями, написанными для всех популярных ОС, включая Windows, Linux, macOS, iOS и даже QNX.
Мы же будем использовать ее для модификации приложений под Android.

Для работы Frida на реальном устройстве необходим Root.

Как открыть 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 дает нам понять,
    что речь идет о Настройках.

Доступные кнопки:

  • Обновить. Нажав на нее, можно обновить список текущих процессов. Необходимо использовать после запуска или остановки приложений.
  • Самый верхний. В таблице будет выбран основной процесс приложения, которое отображается на экране устройства.
  • Подключить. Подключается к выбранному процессу. После этого становятся доступными операции создания и загрузки скрипта.
  • Отключиться. Отключается от процесса. Если приложение завершило работу, то отключение от процесса произойдет автоматически.
Если при попытке обновить список процессов выдается ошибка

Enumerate Processes failed: Cannot read properties of undefined (reading 'getRunningAppProcesses')

Тогда необходимо выполнить экшен Adb Shell: pm uninstall com.google.android.art и перезагрузить устройство.


Скрипт (4):

Окно работы со скриптом. Поддерживаются макросы.

Доступные кнопки:

  • Выбрать. Открывает форму загрузки файлов. Файл скрипта должен иметь расширение .js
  • Сохранить. Сохранение содержимого окна в файл с расширением .js
  • Создать. Компиляция скрипта. Если скрипт содержит ошибки, то в окно информации будет выдано соответствующее уведомление. Ошибки на данном этапе обычно связаны с неправильным синтаксисом.
    (Действие становится активным после подключения к процессу приложения.)
  • Загрузить. Непосредственная загрузка скрипта. Если скрипт содержит ошибки, то в окно информации будет выдано соответствующее уведомление. Ошибки на данном этапе обычно связаны непосредственно с выполнением скрипта, например, из-за отсутствия в коде приложения нужного класса.
    (Действие становится активным только после успешного выполнения кнопки Создать.)
  • Выгрузить. Выгружает скрипт. Он также выгружается автоматически при завершении процесса приложения.

Информация (5):

В это окно выводится различная служебная информация и сообщения, возникающие в процессе выполнения скрипта, а также ошибки и т.д.

Горячие клавиши:

  • (Ctrl + C). Скопировать выделенные сообщения.
  • (Del). Удалить выделенные сообщения.
  • (Ctrl + Del). Удалить все сообщения.

Как проверить, что сервер Frida запустился и работает?

  1. Нажать кнопку «Запустить frida» и дождаться уведомления в информационном окне: «Сервер запущен».
  2. На панели Процессы нажать «Самый верхний». После этого будет выбран активный процесс.
  3. Нажать «Подключиться».
  4. На панели Скрипт ввести код: console.log('Hello, World!');
  5. Нажать «Создать», а потом «Загрузить».
  6. Если все прошло успешно, то в информационном окне появится сообщение: ["type":"log","level":"info","payload":"Hello, World!"]
  7. После этого можно нажать «Выгрузить». Сервер Frida работает!

Стандартные сценарии

Приложение будет перезапущено даже если уже запущено.

  1. На панели Приложения выбрать нужное (по названию или с помощью кнопки «Активное»).
  2. Нажать кнопку «Запустить». Приложение запустится (или перезапустится если уже было запущено), а затем встанет на паузу. Произойдет автоматическое подключение к его процессу.
  3. На панели Скрипт нажать «Выбрать» и в появившейся форме открыть нужный скрипт (файл
    с расширением .js).
  4. Нажить кнопку «Возобновить». Приложение продолжит работу.

Подключаемся к процессу запущенного приложения.

  1. На панели Процессы нажать «Самый верхний», будет выбран активный процесс.
  2. Нажать «Подключиться».
  3. На панели Скрипт нажать «Выбрать» и в появившейся форме открыть нужный скрипт (файл
    с расширением .js).
  4. Нажать «Создать», а потом «Загрузить».


Полезные ссылки