Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
| reverseenengineering:soft [2025/07/16 22:52] – Lex | reverseenengineering:soft [2025/07/17 02:18] (текущий) – [Граберы] Lex | ||
|---|---|---|---|
| Строка 2: | Строка 2: | ||
| ===== Отладчики ===== | ===== Отладчики ===== | ||
| + | Отладчики — ключевой инструмент реверс-инженера. Они позволяют по шагам выполнять бинарные файлы, устанавливать точки останова (breakpoints), | ||
| + | |||
| + | ---- | ||
| ==== x64dbg/ | ==== x64dbg/ | ||
| - | x64dbg | + | Мощный |
| + | |||
| + | **Функциональность:** | ||
| + | * Графический дизассемблер и отладчик | ||
| + | * Поддержка плагинов и скриптов | ||
| + | * Удобная панель регистров, | ||
| + | * Поддержка обфусцированных | ||
| + | * Поиск строк, API-вызовов, | ||
| + | * Интеграция с символами PDB | ||
| + | * Расширенные инструменты анализа (xAnalyzer) | ||
| **Плюсы: | **Плюсы: | ||
| - | * Удобный графический интерфейс | + | * Современный |
| - | * Активное сообщество и регулярные обновления | + | * Поддержка |
| - | * Поддержка | + | * Бесплатен, активно развивается |
| - | * Расширенные функции скриптинга (xAnalyzer, ScyllaHide | + | |
| **Минусы: | **Минусы: | ||
| * Только для Windows | * Только для Windows | ||
| - | * Может быть менее мощным | + | * Зависит |
| - | **Лучше всего подходит для:** | + | **Идеально подходит для:** |
| - | * Отладки PE-файлов | + | * Интерактивного анализа поведения вредоносного кода |
| - | * Реверс-инжиниринга | + | * Динамического патчинга |
| - | * Патчинга исполняемых | + | * Поиска уязвимостей и отладки софта Windows |
| ---- | ---- | ||
| ==== OllyDbg ==== | ==== OllyDbg ==== | ||
| - | OllyDbg — классический 32-битный отладчик для | + | Легендарный отладчик для 32-битных приложений Windows. Свою популярность он получил за счёт простоты и большого количества доступных плагинов. |
| + | |||
| + | **Функциональность: | ||
| + | * Отладка и дизассемблирование кода | ||
| + | * Анализ импортов/ | ||
| + | * Интерактивное редактирование | ||
| + | * Система плагинов (OllyAdvanced, | ||
| + | * Поиск по памяти, именам функций и т.д. | ||
| **Плюсы: | **Плюсы: | ||
| - | * Простота использования | + | * Интуитивно |
| - | * Хорошо подходит для | + | * Отлично подходит для |
| - | * Большое | + | * Большое |
| **Минусы: | **Минусы: | ||
| - | * Нет поддержки 64-битных приложений | + | * Только 32-бит |
| - | * Проект устарел, | + | * Нет обновлений |
| - | * Ограниченные возможности | + | * Сложности |
| - | **Лучше всего подходит для:** | + | **Идеально подходит для:** |
| - | * Обучения отладке | + | * Реверса старых программ |
| - | * Реверса старого 32-битного ПО | + | * Учебных целей |
| ---- | ---- | ||
| ==== IDA Pro ==== | ==== IDA Pro ==== | ||
| - | IDA Pro — один из самых мощных коммерческих дизассемблеров с функцией отладки. | + | Один из самых мощных |
| + | |||
| + | **Функциональность: | ||
| + | * Гибридный статический анализ с возможностью | ||
| + | * Поддержка десятков архитектур и форматов (x86, x64, ARM, MIPS, PowerPC и др.) | ||
| + | * Встроенный скриптовый язык IDC и Python API | ||
| + | * Интерактивная графовая навигация по коду (flow chart) | ||
| + | * Интеграция с декомпилятором (Hex-Rays Decompiler) | ||
| **Плюсы: | **Плюсы: | ||
| - | * Мощный статический анализатор | + | * Глубокий статический анализ |
| - | * Поддержка множества архитектур и форматов | + | * Расширяемость через скрипты и плагины |
| - | * Встроенный отладчик | + | * Широкое применение в профессиональном реверсе |
| - | * Интерактивная диаграмма | + | |
| **Минусы: | **Минусы: | ||
| - | * Высокая | + | * Высокая цена ($$$) |
| * Сложный интерфейс для новичков | * Сложный интерфейс для новичков | ||
| - | * Ограничения демо-версии | + | * Некоторые функции недоступны в бесплатной версии |
| - | **Лучше всего подходит для:** | + | **Идеально подходит для:** |
| - | * Глубокого статического анализа | + | * Глубокого анализа вредоносного |
| - | * Реверс-инжиниринга | + | * Работа с редкими архитектурами и нестандартными бинарниками |
| - | * Анализа вредоносного ПО | + | * Исследовательской работы в области reverse engineering |
| ---- | ---- | ||
| ==== RADARE2 ==== | ==== RADARE2 ==== | ||
| - | RADARE2 — мощный кроссплатформенный фреймворк для анализа бинарных файлов. | + | Продвинутый кроссплатформенный фреймворк для анализа бинарных файлов. Поддерживает отладку, |
| - | **Плюсы:** | + | **Функциональность:** |
| - | * Кроссплатформенность (Linux, Windows, macOS) | + | * Консольный интерфейс + веб GUI (Cutter) и Ghidra-подобный декомпилятор (r2ghidra) |
| * Поддержка множества архитектур | * Поддержка множества архитектур | ||
| - | * Скриптуемость (ESIL, r2pipe) | + | * Символьный анализ, |
| - | * Поддержка анализа прошивок | + | * Плагинная архитектура и мощный |
| + | |||
| + | **Плюсы: | ||
| + | * Открытый исходный код | ||
| + | * Гибкость | ||
| + | * Работа на Linux, macOS, Windows | ||
| **Минусы: | **Минусы: | ||
| - | * Высокий порог входа, сложный интерфейс | + | * Высокий порог входа |
| - | * Отсутствие полноценного GUI (только r2ghidra | + | * Недостаток |
| + | * Слабый GUI по сравнению с конкурентами | ||
| - | **Лучше всего подходит для:** | + | **Идеально подходит для:** |
| - | * Анализа нестандартных форматов и платформ | + | * Кроссплатформенного анализа |
| - | * Автоматизации | + | * Сценарного анализа и автоматизации |
| * Проектов с открытым исходным кодом | * Проектов с открытым исходным кодом | ||
| Строка 84: | Строка 114: | ||
| ==== GHIDRA ==== | ==== GHIDRA ==== | ||
| - | GHIDRA — бесплатный инструмент от NSA для обратного | + | Открытый проект от Агентства национальной безопасности США (NSA), предназначенный |
| + | |||
| + | **Функциональность:** | ||
| + | * Поддержка PE, ELF, Mach-O, и других форматов | ||
| + | * Встроенный | ||
| + | * Графовая | ||
| + | * Поддержка скриптов | ||
| + | * Совместная работа (multi-user mode), плагинная архитектура | ||
| **Плюсы: | **Плюсы: | ||
| - | * Бесплатная и мощная альтернатива IDA Pro | + | * Бесплатна и кроссплатформенна |
| - | * Поддержка различных | + | * Постоянно |
| - | * Встроенный декомпилятор | + | * Сравнима по возможностям с IDA Pro |
| - | * Скриптуемость на Java и Python | + | |
| **Минусы: | **Минусы: | ||
| - | * Меньше готовых плагинов по сравнению с IDA | + | * Медленная работа на больших |
| - | * Более медленная работа на больших | + | * Некоторые баги при |
| - | * GUI может быть неудобным для некоторых задач | + | * Интерфейс требует привыкания |
| - | **Лучше всего подходит для:** | + | **Идеально подходит для:** |
| - | * Статического анализа | + | * Начального |
| - | * Декомпиляции бинарных файлов | + | * Углублённой работы с декомпиляцией |
| - | * Обучения реверс-инжинирингу | + | * Исследования |
| - | ---- | + | ===== Сравнительная характеристика ===== |
| + | |||
| + | ^ Отладчик | ||
| + | | x64dbg/ | ||
| + | | OllyDbg | ||
| + | | IDA Pro | x86, x64, ARM, MIPS, PowerPC, и др. | GUI + CLI | Да (Hex-Rays) | Да (IDC, Python API) | Высокая (много плагинов, | ||
| + | | RADARE2 | ||
| + | | GHIDRA | ||
| + | | Bochs | x86, x86-64 | GUI + CLI | Нет | ||
| + | | QEMU | x86, x64, ARM, MIPS, и др. | CLI | Нет | ||
| + | | Unicorn Engine| x86, x64, ARM, ARM64, MIPS | API Only | Нет | ||
| + | |||
| + | * Архитектуры — поддерживаемые архитектуры процессоров | ||
| + | * GUI / CLI — графический или командный интерфейс | ||
| + | * Декомпиляция — встроенный или сторонний декомпилятор (возможность восстановления C-подобного кода) | ||
| + | * API / Скрипты — возможность автоматизации через API, скриптовые языки | ||
| + | * Расширяемость — поддержка плагинов, | ||
| + | * ОС — операционные системы, | ||
| ===== Сканеры ресурсов ===== | ===== Сканеры ресурсов ===== | ||
| Строка 139: | Строка 192: | ||
| ===== Граберы ===== | ===== Граберы ===== | ||
| Инструменты для перехвата и извлечения данных, | Инструменты для перехвата и извлечения данных, | ||
| + | |||
| + | |||
| + | ==== NinjaRipper ==== | ||
| + | NinjaRipper — инструмент для **перехвата и извлечения 3D-моделей**, | ||
| + | |||
| + | **Функциональность: | ||
| + | * Перехват моделей, | ||
| + | * Поддержка DirectX 9/11/12, OpenGL, Vulkan (ограниченно) | ||
| + | * Возможность экспорта в формат `.rip` или `.obj` | ||
| + | * Сопровождается визуальным препросмотром (NinjaViewer) | ||
| + | * Перехватывает также шейдеры и их параметры (в зависимости от движка) | ||
| + | |||
| + | **Плюсы: | ||
| + | * Позволяет извлечь ресурсы даже из защищённых или нестандартных движков | ||
| + | * Может работать с 32/ | ||
| + | * Сообщество активно делится профилями и опытом | ||
| + | * Поддержка различных хаков запуска (вкл. ReShade hook и Custom DLL Injection) | ||
| + | |||
| + | **Минусы: | ||
| + | * Не всегда работает с современными движками и античитами | ||
| + | * Часто требует подбора запуска (launch mode, wrapper, hooking) | ||
| + | * Модели могут экспортироваться без структуры (нужно вручную собирать сцены) | ||
| + | * Может вызывать падение игры или конфликт с защитой | ||
| + | |||
| + | **Лучше всего подходит для:** | ||
| + | * Извлечения 3D-моделей из старых и средних по возрасту игр | ||
| + | * Создания модов, цифровой реставрации и обучения 3D-графике | ||
| + | * Исследования проприетарных движков, | ||
| + | |||
| + | ==== Сравнение: | ||
| + | ^ Характеристика | ||
| + | | Поддержка API | DirectX 9/10/11/12, OpenGL, Vulkan | ||
| + | | Совместимость | ||
| + | | Формат вывода | ||
| + | | Поддержка 64-бит | ||
| + | | Работа в Windows 10/11 | Да (частично, | ||
| + | | Уровень захвата | ||
| + | | Поддержка ReShade | ||
| + | |||
| + | **Вывод: | ||
| + | *3D Ripper DX* — устаревший, | ||
| + | *NinjaRipper* — универсальнее, | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ==== Интеграция с ReShade ==== | ||
| + | ReShade — инструмент постобработки, | ||
| + | |||
| + | **Методы интеграции: | ||
| + | * Установка ReShade перед запуском игры | ||
| + | * Использование ReShade `.dll` в качестве прокси-хука (`dxgi.dll` / `d3d11.dll`) | ||
| + | * Привязка NinjaRipper к ReShade-процессу (в режимах: | ||
| + | * Изменение порядка загрузки DLL (через `LoadLibrary`) | ||
| + | |||
| + | **Плюсы: | ||
| + | * ReShade помогает перехватывать сцены там, где NinjaRipper не может напрямую | ||
| + | * Уменьшает вероятность детекта античитами (видится как графический фильтр) | ||
| + | |||
| + | **Минусы: | ||
| + | * Требует ручной настройки путей DLL и фильтрации ReShade-шейдеров | ||
| + | * Может сбивать порядок захвата текстур/ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ==== Обход античитов ==== | ||
| + | Некоторые игры с EAC, BattleEye, Denuvo или собственными DRM-механизмами могут блокировать: | ||
| + | * инжекцию DLL | ||
| + | * отладку процессов | ||
| + | * графический хук | ||
| + | |||
| + | **Способы обхода: | ||
| + | * Использование **режима оффлайн** (Steam/ | ||
| + | * Запуск игры через **ReShade**, | ||
| + | * Использование **пользовательских launchers** (например, | ||
| + | * Инъекция через **NinjaRipper Intruder Injector** (настройка процесса захвата вручную) | ||
| + | * Работа с **Portable-версией игры** (если доступна) | ||
| + | |||
| + | **Важно: | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ==== Рекомендованные конфигурации запуска NinjaRipper ==== | ||
| + | Для повышения шансов успешного захвата моделей: | ||
| + | |||
| + | **1. ReShade-хук (гибридный метод): | ||
| + | * Установить ReShade в папку с игрой | ||
| + | * Назначить `dxgi.dll` как целевой для захвата | ||
| + | * Выбрать в NinjaRipper режим `Intruder Injector` | ||
| + | * Указать путь к `ReShade64.dll` или `dxgi.dll` | ||
| + | |||
| + | **2. Wrapper Mode (менее стабильный, | ||
| + | * Выбрать DLL-соответствие API (d3d11.dll, opengl32.dll) | ||
| + | * Поместить файлы NinjaRipper в корень игры | ||
| + | * Запустить игру напрямую | ||
| + | |||
| + | **3. Параметры запуска: | ||
| + | * `Admin mode`: всегда запускать NinjaRipper и игру от имени администратора | ||
| + | * `DelayInject`: | ||
| + | * `Force Windowed`: запуск игры в оконном режиме для стабильности захвата | ||
| + | * `Disable anti-aliasing`: | ||
| + | |||
| + | **Дополнительно: | ||
| + | * Сохраняйте лог процесса | ||
| + | * Пробуйте разные версии NinjaRipper (1.7, 2.0 beta) | ||
| + | * Используйте **NinjaRipper Viewer** для первичного анализа `.rip` файлов | ||
| + | |||
| + | ---- | ||
| + | |||
| + | |||
| + | |||
| ==== Wireshark ==== | ==== Wireshark ==== | ||
| Строка 211: | Строка 374: | ||
| * Малварного анализа | * Малварного анализа | ||
| * Предварительного сканирования перед реверсом | * Предварительного сканирования перед реверсом | ||
| + | |||
| + | ===== Эмуляторы ===== | ||
| + | Позволяют запускать или анализировать поведение исполняемых файлов в изолированной или эмулируемой среде. Часто используются для анализа вредоносного ПО и отладки. | ||
| + | |||
| + | ==== QEMU ==== | ||
| + | **Плюсы: | ||
| + | * Поддержка множества архитектур (x86, ARM, MIPS, RISC-V и др.) | ||
| + | * Возможность запуска образов ОС | ||
| + | * Используется в связке с GDB для отладки | ||
| + | |||
| + | **Минусы: | ||
| + | * Сложность настройки | ||
| + | * Менее удобен для Windows-приложений | ||
| + | |||
| + | **Лучше всего подходит для:** | ||
| + | * Эмуляции нестандартных или встраиваемых систем | ||
| + | * Отладки low-level кода (прошивки, | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ==== Bochs ==== | ||
| + | **Плюсы: | ||
| + | * Аппаратная эмуляция на уровне инструкций CPU | ||
| + | * Поддержка отладки и трассировки инструкций | ||
| + | |||
| + | **Минусы: | ||
| + | * Медленная работа | ||
| + | * Ограниченные возможности по сравнению с QEMU | ||
| + | |||
| + | **Лучше всего подходит для:** | ||
| + | * Отладки загрузчиков и низкоуровневого кода | ||
| + | * Эмуляции старых x86-систем | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ==== Unicorn Engine ==== | ||
| + | **Плюсы: | ||
| + | * Быстрая и лёгкая интеграция | ||
| + | * Скриптуемость на Python, C и др. | ||
| + | * Поддержка нескольких архитектур | ||
| + | |||
| + | **Минусы: | ||
| + | * Только эмуляция CPU (без ОС и API) | ||
| + | * Требует ручной загрузки данных/ | ||
| + | |||
| + | **Лучше всего подходит для:** | ||
| + | * Частичной эмуляции фрагментов бинарного кода | ||
| + | * Эмуляции shell-кода и вредоносных инструкций | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Декомпиляторы ===== | ||
| + | Инструменты, | ||
| + | |||
| + | ==== RetDec ==== | ||
| + | **Плюсы: | ||
| + | * Open Source | ||
| + | * Поддержка множества форматов (PE, ELF, Mach-O) | ||
| + | * Интеграция с IDA и Ghidra | ||
| + | |||
| + | **Минусы: | ||
| + | * Псевдокод часто содержит лишние конструкции | ||
| + | * Нет полноценного GUI | ||
| + | |||
| + | **Лучше всего подходит для:** | ||
| + | * Декомпиляции редких форматов | ||
| + | * Образовательных и исследовательских задач | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ==== JEB Decompiler ==== | ||
| + | **Плюсы: | ||
| + | * Поддержка Android, Java и native кода | ||
| + | * Прекрасный GUI | ||
| + | * Поддержка obfuscation-aware анализа | ||
| + | |||
| + | **Минусы: | ||
| + | * Платный (дорогая лицензия) | ||
| + | * Требует регистрации | ||
| + | |||
| + | **Лучше всего подходит для:** | ||
| + | * Анализа Android-приложений и DEX-файлов | ||
| + | * Обратного инжиниринга Java-кода | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Инструменты упаковки/ | ||
| + | |||
| + | ==== UPX ==== | ||
| + | **Плюсы: | ||
| + | * Высокая степень сжатия | ||
| + | * Поддержка множества форматов (PE, ELF, Mach-O) | ||
| + | * Возможность распаковки | ||
| + | |||
| + | **Минусы: | ||
| + | * Легко обнаруживается защитными средствами | ||
| + | * Простота обхода | ||
| + | |||
| + | **Лучше всего подходит для:** | ||
| + | * Минимизации размера файлов | ||
| + | * Тестирования unpacking-рутин в анализе вредоносного ПО | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ==== MPRESS, ASPack, Themida (коммерческие) ==== | ||
| + | **Плюсы: | ||
| + | * Защита от реверс-инжиниринга и анализа | ||
| + | * Встроенные анти-дизассемблерные техники | ||
| + | |||
| + | **Минусы: | ||
| + | * Трудности при отладке/ | ||
| + | * Может вызывать ложные срабатывания антивирусов | ||
| + | |||
| + | **Лучше всего подходит для:** | ||
| + | * Защиты авторского ПО | ||
| + | * Усложнения анализа вредоносного кода | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Мониторинг API ===== | ||
| + | |||
| + | ==== API Monitor ==== | ||
| + | **Плюсы: | ||
| + | * Перехват WinAPI и COM-вызовов в реальном времени | ||
| + | * Настраиваемые фильтры | ||
| + | * Возможность перехвата параметров и возвращаемых значений | ||
| + | |||
| + | **Минусы: | ||
| + | * Только для Windows | ||
| + | * Ограниченная автоматизация | ||
| + | |||
| + | **Лучше всего подходит для:** | ||
| + | * Анализа поведения исполняемых файлов | ||
| + | * Поиска точек входа для отладки | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ==== Procmon (Sysinternals) ==== | ||
| + | **Плюсы: | ||
| + | * Логгирование всех файловых, | ||
| + | * Гибкая фильтрация событий | ||
| + | |||
| + | **Минусы: | ||
| + | * Много лишнего шума | ||
| + | * Нет возможности детальной трассировки кода | ||
| + | |||
| + | **Лучше всего подходит для:** | ||
| + | * Поведенческого анализа ПО | ||
| + | * Обнаружения следов активности малвари | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Инструменты анти-анализа ===== | ||
| + | Техники и утилиты, | ||
| + | |||
| + | ==== ScyllaHide (для x64dbg) ==== | ||
| + | **Плюсы: | ||
| + | * Скрытие от отладчиков | ||
| + | * Обход анти-отладочных проверок | ||
| + | |||
| + | **Минусы: | ||
| + | * Требует настройки | ||
| + | * Может быть несовместим с некоторыми конфигурациями | ||
| + | |||
| + | **Лучше всего подходит для:** | ||
| + | * Обхода защит в процессе отладки | ||
| + | * Анализа защищённых бинарников | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ==== VMProtect / Enigma Protector / Themida (анализируемые) ==== | ||
| + | **Плюсы: | ||
| + | * Используют виртуализацию инструкций | ||
| + | * Противодействуют статическому и динамическому анализу | ||
| + | |||
| + | **Минусы: | ||
| + | * Сложны для реверса | ||
| + | * Часто требуют написания собственных распаковщиков/ | ||
| + | |||
| + | **Лучше всего подходит для:** | ||
| + | * Обучения анти-анализу | ||
| + | * Анализа сложных вредоносных образцов | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ==== Pafish (для песочниц и анализаторов) ==== | ||
| + | **Плюсы: | ||
| + | * Проверяет наличие виртуализации, | ||
| + | * Используется как тест для песочниц и sandboxes | ||
| + | |||
| + | **Минусы: | ||
| + | * Не защищает, | ||
| + | |||
| + | **Лучше всего подходит для:** | ||
| + | * Анализа среды исполнения | ||
| + | * Тестирования эффективности анти-анализов | ||
| + | |||