Реверс-инжиниринг — одно из немногих направлений в ИБ, где неструктурированное обучение почти гарантированно заводит в тупик. Слишком широкий стек: архитектура процессора, ассемблер, форматы исполняемых файлов, операционные системы на уровне ядра, криптография, сетевые протоколы — и всё это нужно не «знать в общих чертах», а понимать достаточно глубоко, чтобы читать незнакомый код.
Большинство начинающих делают одну из двух ошибок. Первая — пытаются сразу открыть Ghidra и «разобраться по ходу», без понимания того, что они видят на экране. Вторая — застревают в бесконечном изучении теории, не касаясь реальных бинарников месяцами. Roadmap решает обе проблемы: он задаёт порядок тем и встраивает практику на каждом этапе.
💡 Реверс-инжиниринг — не специализация для первого шага в ИБ. Но если у вас есть опыт в разработке или смежных направлениях, путь до первых результатов короче, чем кажется. Подробнее о профессии — в статье Кто такой реверс-инженер: профессия, зарплата, карьерный путь.
Ghidra и IDA — не точка входа. Они инструменты интерпретации: чтобы понимать, что показывает дизассемблер, нужно сначала понимать, откуда берётся то, что он показывает. Три темы, без которых двигаться дальше бессмысленно.
Нужно понять: как процессор выполняет инструкции, что такое регистры общего назначения (RAX, RBX, RSP, RBP и остальные в x64), как устроен стек — в частности, как функции передают аргументы и возвращают значения. Модель памяти процесса: сегменты кода, данных, стека и кучи — и почему это важно при анализе. Хороший ресурс для старта: «Computer Systems: A Programmer's Perspective» (Bryant & O'Hallaron) — главы 3–4.
Большинство малвари и системного ПО написано на C или C++. Декомпилятор Ghidra восстанавливает псевдокод именно в стиле C. Не зная C, вы будете читать декомпилированный код как иностранный язык: слова знакомы, но смысл ускользает. Достаточно уровня уверенного понимания: указатели, работа с памятью, структуры, функции — не нужно уметь писать красивый код, нужно уметь его читать и понимать, что происходит на уровне машины.
Windows — основная платформа для большинства задач реверса в корпоративном ИБ. Нужно понимать: как загружаются исполняемые файлы (PE-формат, загрузчик PE, таблица импортов), что такое WinAPI и как с ним работает малварь, как устроены процессы и потоки, реестр, файловая система. Linux — второй приоритет, особенно для работы с серверными угрозами и прошивками на базе Linux.
💡 Реалистичный срок на фундамент при обучении 1–2 часа в день — 2–3 месяца. Торопиться здесь контрпродуктивно: пробелы в фундаменте будут тормозить на каждом следующем этапе.
Ассемблер — язык реверс-инженера. Не нужно уметь писать на нём программы. Нужно уметь его читать: видеть перед собой листинг дизассемблера и понимать, что происходит в программе. Это принципиально иной навык — навык интерпретации, а не написания.
Минимальный рабочий уровень — это: уверенное знание базовых инструкций (MOV, PUSH, POP, CALL, RET, JMP и условные переходы), понимание соглашений о вызовах (cdecl, stdcall, fastcall, System V AMD64 ABI), умение «читать» стек при вызове функции и распознавать типичные паттерны компилятора — циклы, условные ветви, работу со строками.
Практический подход: пишите простые программы на C, компилируйте их и смотрите, что получается в дизассемблере. Godbolt Compiler Explorer делает это в браузере, в реальном времени — идеальный инструмент для понимания связи C и ASM. Для x86 — курс «Architecture 1001» от OpenSecurityTraining2 (бесплатно).
💡 ARM — второй по важности ассемблер для реверс-инженера: мобильные устройства, IoT, встроенные системы. Изучать после x86/x64, не параллельно.
Когда фундамент заложен — приходит время инструментов. На начальном этапе достаточно двух: Ghidra для статического анализа и x64dbg для динамического. Оба бесплатны, хорошо документированы и достаточны для большинства учебных задач.
Ghidra — открытый инструмент от АНБ, ставший де-факто стандартом для бесплатного статического анализа. Умеет дизассемблировать и декомпилировать исполняемые файлы под Windows, Linux, macOS, ARM, MIPS и десятки других архитектур. Начните с простого: возьмите любую маленькую программу на C, скомпилируйте, загрузите в Ghidra — и найдите функцию main. Это первое упражнение, которое стоит сделать до любых курсов.
x64dbg позволяет запускать программу под контролем: ставить брейкпоинты, наблюдать за регистрами и памятью в реальном времени, трассировать выполнение шаг за шагом. Динамический анализ незаменим там, где статика недостаточна — упакованные бинарники, динамически генерируемый код, антиотладочные техники. Важно: динамический анализ малвари всегда проводится в изолированной среде — виртуальной машине без сетевого доступа или специализированном sandbox.
💡 Статический и динамический анализ — не альтернативы, а дополняющие подходы. Профессиональный реверс почти всегда начинается со статики (ориентирование в коде) и продолжается динамикой (проверка гипотез).
Теория без практики в реверс-инжиниринге не работает. CTF (Capture The Flag) и crackme — два главных формата учебной практики, которые позволяют работать с реальными бинарниками в безопасной среде, без риска и с чёткой целью.
Crackme — небольшие программы, специально созданные для реверса: обычно нужно найти правильный пароль, серийный номер или обойти защиту. Отличный старт: crackmes.one — каталог заданий с сортировкой по сложности и архитектуре. Первые 10–15 решённых crackme дают больше практического понимания ассемблера, чем месяц чтения теории.
CTF — соревнования по кибербезопасности, где категория RE (Reverse Engineering) включает задания на анализ бинарников. Начальный уровень: picoCTF — задания специально для начинающих, есть подробная документация. Следующий этап: HackTheBox Challenges (категория Reversing), pwn.college. Участие в живых соревнованиях на CTFtime.org — возможность сравнить свой уровень с другими и разбирать чужие writeup-решения после финала.
💡 Writeup — разбор чужого решения задачи CTF — один из самых эффективных способов обучения. После каждого соревнования ищите writeup для задач, которые не смогли решить сами.
После уверенной работы с crackme и базовых CTF-заданий наступает момент перехода к реальным задачам. Два направления, которые идут параллельно.
PE (Portable Executable) — формат исполняемых файлов Windows: .exe, .dll, .sys. ELF (Executable and Linkable Format) — аналог для Linux. Реверс-инженер должен читать эти форматы вручную: знать структуру заголовков, понимать таблицу импортов и экспортов, секции, точку входа. Инструменты: PE-bear, pestudio, readelf. Практика: откройте любой .exe в PE-bear и найдите все импортируемые функции — это прямой путь к пониманию поведения программы.
Начинать с реальных образцов стоит только в полностью изолированной среде. Ресурс для старта — ANY.RUN и Malware Traffic Analysis (malware-traffic-analysis.net): там есть учебные образцы с готовым контекстом. Параллельно: изучите FLARE VM от Mandiant — готовая Windows-среда для анализа малвари, развёртывается в виртуальной машине. Эта тема напрямую пересекается с направлением malware analysis — реверс здесь становится основным рабочим инструментом.
После уверенной работы с PE-форматом, базовым динамическим анализом и несложными образцами малвари — открываются несколько специализаций. Направление выбирается исходя из интересов и рынка труда.
APT и сложная малварь. Анализ целевых угроз, упакованного и обфусцированного кода, антиотладочных техник, шеллкода. Нужно освоить: распаковку (manual unpacking), анализ кастомных протоколов C2, написание YARA-правил. Основные ресурсы: курсы FLARE team от Mandiant, книга «Practical Malware Analysis».
Vulnerability research. Поиск уязвимостей в закрытом ПО через бинарный анализ: бинарный diff (BinDiff), фаззинг с пониманием внутренней структуры (coverage-guided fuzzing), эксплуатация. Это путь к работе в Bug Bounty и исследовательских командах вендоров. Пересекается с пентестом — но глубже по уровню технической экспертизы.
Прошивки и IoT. Извлечение образов прошивок (binwalk, firmware-mod-kit), работа с нестандартными архитектурами (MIPS, ARM, RISC-V), анализ встроенных веб-интерфейсов и сервисов. Особенно востребовано в контексте безопасности АСУ ТП.
Kernel-level анализ. Анализ драйверов Windows и Linux, руткитов, буткитов. Требует глубокого понимания внутренней архитектуры ОС. Инструменты: WinDbg, livekd, Volatility для анализа образов памяти — последнее пересекается с цифровой криминалистикой.
Сообщество реверс-инжиниринга — одно из наиболее щедрых на бесплатные материалы в ИБ. Большинство ключевых ресурсов доступны без оплаты.
OpenSecurityTraining2 (ost2.fyi) — лучшая бесплатная база по архитектуре x86, ассемблеру и реверсу. Курсы структурированы по уровням, есть видео и задания. pwn.college — платформа с задачами по реверсу и эксплуатации, упорядоченными по сложности. Malware Unicorn — бесплатные воркшопы по анализу малвари от практикующих аналитиков.
«Practical Malware Analysis» (Sikorski, Honig) — классика, не устарела. «The Art of Assembly Language» (Hyde) — глубоко и системно про ассемблер. «Hacking: The Art of Exploitation» (Erickson) — связывает реверс с эксплуатацией.
crackmes.one — каталог crackme с фильтрами по сложности. HackTheBox Challenges / Reversing — задачи реального уровня сложности. picoCTF — для начинающих, задачи с пояснениями. CTFtime.org — анонсы соревнований и архив writeup-решений.
Самостоятельный путь через бесплатные ресурсы работает — но требует дисциплины и умения выстраивать программу без внешнего контроля. Структурированные курсы дают три вещи, которых нет в self-study: последовательность тем, обратную связь от практикующих специалистов и среду с готовыми лабораторными образцами.
Курсы по реверс-инжинирингу
Подборка программ по обратному инжинирингу и анализу вредоносного ПО — с разбивкой по уровням и форматам.
Смотреть курсы по реверс-инжинирингу →