IDA Pro: Подробная инструкция и руководство по реверс-инжинирингу
Что такое IDA?
IDA (Interactive DisAssembler) — один из самых мощных инструментов статического анализа и дизассемблирования исполняемых файлов. Разработан компанией Hex-Rays, поддерживает десятки архитектур (x86, ARM, MIPS, PPC и др.) и форматов (PE, ELF, Mach-O и т.д.).
Основное предназначение — реверс-инжиниринг, исследование вредоносного ПО, анализ прошивок, решение CTF-задач, изучение логики проприетарного ПО и т.п.
Основные возможности
- Поддержка множества архитектур (x86/x64, ARM, PPC, MIPS и др.)
- Гибкий графический интерфейс: дизассемблер, граф вызовов, Hex View и др.
- Псевдокод на C (Hex-Rays Decompiler — коммерческая опция)
- Расширение через Python (IDAPython), IDC и плагины
- Работа с удалёнными DB-группами
- Поддержка анализа драйверов, прошивок, BIOS, UEFI, игр и даже микроконтроллеров
Установка и запуск
- Скачать: https://hex-rays.com/ida-pro/
- Бесплатная версия: [IDA Free](https://hex-rays.com/ida-free/) (ограничения: архитектура x86/x64, нет декомпилятора)
- Совместимость: Windows / Linux / macOS
Установка:
- Запустите инсталлятор
- Укажите путь, архитектуры, языки скриптов
- Запустите IDA и выберите «New Project» → откройте бинарный файл
Поддерживаемые форматы
- PE (Windows EXE/DLL/SYS)
- ELF (Linux)
- Mach-O (macOS)
- Raw binaries (.bin, .img)
- ROM-файлы, прошивки
- Снимки памяти (dumps)
- .COM, .SYS, .DRV, .AX, .MOD
Интерфейс IDA
| Компонент | Назначение |
|---|---|
| IDA View-A | Ассемблерный листинг (основной код) |
| Graph View | Граф исполнения функций (Flow Chart) |
| Hex View | Шестнадцатеричный дамп |
| Functions | Таблица всех найденных функций |
| Strings | Статические строки |
| Structures | Определения структур и классов |
| Enums | Перечисления |
| Imports/Exports | Списки API-функций |
| Output window | Журнал действий и скриптов |
Горячие клавиши IDA (x86)
| Клавиша | Функция |
|---|---|
| `G` | Перейти по адресу или имени |
| `P` | Определить функцию |
| `N` | Назначить имя функции/переменной |
| `;` | Комментарий на строке |
| `A` | Комментарий в отдельной строке |
| `X` | Показать все ссылки |
| `Shift+F12` | Список строк |
| `Ctrl+Enter` | Открыть Graph View |
| `C/D` | Пометить как код/данные |
| `U` | Удалить определение |
| `F5` | Открыть Hex-Rays декомпилятор |
| `Ctrl+S` | Сохранить проект |
Быстрый сценарий анализа
1. Открываем файл `target.exe` или `.bin` 2. Выбираем тип загрузки (анализируемый формат, база смещения, архитектура) 3. Автоматический анализ (`autoanalysis`) — IDA распознаёт функции и сегменты 4. Заходим в окно Functions и переименовываем подозрительные 5. Переходим в Strings (Shift+F12) — ищем строку типа «Access Denied» 6. Возвращаемся в дизассемблер (`IDA View`) и находим функции-вызывающие 7. Включаем `Graph View` (`Space`) — анализируем логические переходы 8. Комментируем (`;`, `A`), помечаем (`N`, `P`) важные участки
Hex-Rays Decompiler (платная)
- Распознаёт код и выводит псевдокод на C
- Позволяет быстрее понять общую логику
- Удобен для изучения алгоритмов, операций с памятью, API-вызовов
- Поддерживает редактирование имён, типов, структур
- Поддерживает x86, x64, ARM, MIPS (в зависимости от лицензии)
Скрипты и автоматизация
IDAPython
- Python 3.10 поддерживается
- Пример скрипта:
```python from idautils import Strings
for s in Strings():
print(f"{hex(s.ea)}: {str(s)}")