====== 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)}")