# Отладка приложений с помощью IDA

В этой главе мы покажем, как быстро отлаживать приложения для Android с помощью FIRERPA, его функций и скриптов. Наша демонстрационная среда — это Android 10, хост-система — Ubuntu 22.04 с установленными IDA 7.5 (wine), ADB, jdb, Python и другими необходимыми инструментами. Рекомендуется использовать IDA версии 7.5 или выше и установить последнюю версию серверной части FIRERPA.

![Динамическая отладка](/assets/images/IDA.png)

## Включение режима отладки

Если на вашем устройстве уже включен режим отладки, этот шаг можно пропустить. В противном случае откройте удаленный рабочий стол FIRERPA и введите в терминале `setdebuggable`. После ввода команды ваше устройство выполнит программную перезагрузку. Не беспокойтесь, оно вернется в нормальное состояние примерно через две минуты. После этого ваше устройство будет в режиме отладки.

![Динамическая отладка](/assets/images/debugger-setdebuggable.png)

## Установка сервера отладки IDA

Прежде чем продолжить, вам необходимо загрузить на устройство сервер отладки для Android, поставляемый с IDA. Вы можете найти `android_server` и `android_server64` в каталоге dbgsrv вашей установки IDA. Если целевое приложение использует 32-битные библиотеки, используйте `android_server`, в противном случае — `android_server64`. Перетащите нужный файл или используйте команду adb push, чтобы загрузить его на устройство Android, а затем предоставьте права на выполнение.

```bash
chmod 755 android_server*
```

После предоставления прав на выполнение необходимо запустить службу android_server. Вы можете запустить этот исполняемый файл через adb (требуются root-права) или через терминал удаленного рабочего стола. В системах более новых версий (>=10) необходимо предварительно установить переменную окружения `IDA_LIBC_PATH`.

```bash
IDA_LIBC_PATH=/apex/com.android.runtime/lib64/bionic/libc.so ./android_server64 -kk
```

```{note}
Для отладки 32-битных приложений необходимо изменить `IDA_LIBC_PATH` на `/apex/com.android.runtime/lib/bionic/libc.so` и использовать 32-битную версию сервера отладки `android_server`.
```

## Проброс порта для сервера отладки IDA

Для задач отладки, требующих высокой производительности и работы в реальном времени, мы рекомендуем использовать USB-соединение. Убедитесь, что ваше устройство подключено к компьютеру и авторизация adb выполнена, затем выполните следующую команду.

```bash
adb forward tcp:23946 tcp:23946
```

```{note}
23946 — это порт прослушивания по умолчанию для `android_server` в IDA. Если вы изменили этот порт при запуске `android_server`, укажите правильный порт.
```

## Начало отладки приложения

Мы не стали усложнять процесс и просто создали для вас скрипт-обертку, который автоматически выполнит большинство последующих действий. Просто следуйте инструкциям, выводимым скриптом. Вы можете найти скрипт `ida.py` в каталоге `tools` проекта и запустить его следующей командой.

```bash
python3 ida.py -d 192.168.0.2 -a com.android.settings
```

![Динамическая отладка](/assets/images/debugger-cmd.png)

Здесь параметр `-d` — это IP-адрес вашего устройства, на котором запущен сервис FIRERPA, а параметр `-a` — это имя пакета приложения. После выполнения команды вам будет предложено присоединить IDA к процессу приложения.

![Динамическая отладка](/assets/images/debugger-attach.png)

![Динамическая отладка](/assets/images/debugger-setup.png)

<p align="center" style="margin-top:0px">
<img src="/assets/images/debugger-choice.png" alt="Динамическая отладка">
</p>

![Динамическая отладка](/assets/images/debugger-start.png)

Отлично, все шаги выполнены. Вернитесь в командную строку, где запущен `ida.py`, и нажмите клавишу Enter. Теперь вы можете продолжать отладку.