CTFINF Обучение

Реверс-инжиниринг для ВСОШ по информационной безопасности

Практический реверс для ВСОШ по ИБ: как процессор исполняет код, Ghidra, gdb + pwndbg, IDA Free и radare2, крекми и обращение проверок, деобфускация, Go, .NET, Java, Python и Android, упаковщики и самомодифицирующийся код, патчинг, ARM и RISC-V. 30 реальных reverse-задач олимпиады с разборами и финальный mini-CTF. Первый модуль бесплатно.

Длительность: 7 модулей · 28 обязательных уроков · около 28 часов. Дополнительно 3 урока (ещё около 3 часов) — их можно пройти в любое время. Первый модуль — бесплатно.

Цена: инферы 6 500 инферы 990 Горящая скидка · 990 ₽ при пополнении, 1 инфер = 1 ₽

Часть модулей открыта бесплатно для ознакомления. Полный доступ приобретается за инферы . Зарегистрироваться и купить курс

О курсе

Курс готовит к задачам категории reverse (реверс-инжиниринг) Всероссийской олимпиады школьников по информационной безопасности — от регионального до заключительного этапа. Reverse пугает сильнее крипты и web, потому что кажется магией: дают файл-программу без исходного кода и просят понять, что она делает, и достать флаг. Этот курс убирает магию.

Мы начинаем не с инструментов, а с фундамента: как процессор исполняет код, что такое регистры и память, как устроен стек и вызов функции. Без этого декомпиляция в Ghidra остаётся набором иероглифов. Затем даём рабочий инструментарий — триаж (file, strings), статику (Ghidra), динамику (gdb + pwndbg), а там, где это добавляет навык, — те же приёмы в IDA Free и radare2: на олимпиадной машине может оказаться любой из них, и мы показываем, что из этого работает без интернета. И учим применять всё это к реальным классам задач: крекми и обращение проверок, кодировки-«матрёшки», сетевой чекер на pwntools, чтение декомпиляции нативного ELF и места, где Ghidra врёт, деобфускация, не-C бинарники (Go, .NET, Java, Python), Android-APK с нативной библиотекой, упаковщики и самомодифицирующийся код, патчинг и ассемблер незнакомых архитектур — ARM, RISC-V и даже Эльбруса.

Темы курса доказаны реальными задачами олимпиады: в теорию встроены разборы 30 reverse-задач регионального и заключительного этапов 2023–2026 годов с указанием года, этапа и класса. Самостоятельная практика переносит тот же метод на новые файлы, поэтому вы осваиваете способ решения, а не заучиваете опубликованный ответ. Завершает курс финал — mini-CTF: восемь задач с настоящих соревнований без подписи темы. Сначала нужно понять, что за файл и какой в нём приём, потом решить.

Реверс проще один раз увидеть, чем прочитать. Поэтому приёмы показаны на больше чем 140 кадрах настоящих программ — Ghidra, IDA Free, radare2, gdb + pwndbg — с выносками: видно, куда нажать и что появится на экране. А самая «страшная» тема — как работают регистры, стек и память — разобрана в видео вживую в отладчике на простой программе; ещё одно видео — разбор задачи регионального этапа «Коллектив 2.0».

Для тех, кто хочет больше, — три дополнительных урока сверх программы олимпиады: z3 и angr (когда проверку проще описать, чем обратить), VM-обфускация (пишем дизассемблер для чужого процессора) и анти-отладка. Они не блокируют основной маршрут, их можно пройти в любое время.

Первый модуль — «Как компьютер исполняет код» — доступен бесплатно целиком. Для перехода к следующему уроку нужно набрать не менее 50% баллов текущего урока и отметить его завершённым.

Для кого курс

Кому подойдёт курс

  • ученикам 9–11 классов (частично 8), которые готовятся к региональному или заключительному этапу ВСОШ по информационной безопасности;
  • тем, кто уже решает крипту и web, но видит файл-программу и не знает, с чего начать;
  • тем, кто хочет систематизировать реверс: чтение ассемблера и декомпиляции, отладка, обращение чекеров, снятие обфускации;
  • преподавателям и тренерам — как последовательная программа с автопроверкой, подсказками и полными разборами.

Ассемблер и устройство процессора знать заранее не нужно — им посвящён весь первый модуль. Нужен рабочий минимум Python и готовность повторять команды в терминале.

Чему научится ученик

Понимать

  • как процессор исполняет машинный код: регистры, память, стек, вызов функции, соглашение о вызовах;
  • что компилятор оставляет в бинаре, а что выбрасывает, и почему реверс вообще возможен;
  • как одна и та же логика выглядит на уровне C, ассемблера и машинных байт.

Анализировать

  • делать триаж незнакомого файла (file, strings, nm) и классифицировать его;
  • читать декомпиляцию в Ghidra, сверять её с дизассемблером и замечать, где декомпилятор врёт;
  • проверять гипотезы в gdb + pwndbg: точки останова, регистры, просмотр памяти;
  • повторять те же приёмы в IDA Free и radare2 — граф переходов, перекрёстные ссылки, отладчик, патч байтов — и знать, что из этого работает без интернета.

Решать на олимпиаде

  • обращать крекми: посимвольные чекеры пароля (равенства, XOR, арифметика, сдвиги), позиционные и зацепленные ключи;
  • снимать кодировки-«матрёшки» и обфускацию, доставать флаг, которого нет в strings;
  • писать скрипт на pwntools против сетевого чекера с nonce;
  • узнавать и читать не-C бинарники (Go, .NET, Java, Python), доставать нативную библиотеку из APK по имени JNI-экспорта, снимать UPX, ловить самомодифицирующийся код в отладчике;
  • патчить проверку, когда программу проще заставить, чем понять, — и видеть, когда патч даёт мусор;
  • читать ассемблер ARM, RISC-V и Эльбруса, который видишь впервые.

Дополнительно, по желанию

  • отдавать клубок условий решателям z3 и angr;
  • писать дизассемблер и эмулятор для VM-обфускации;
  • снимать анти-отладку: ptrace, TracerPid, тайминг на rdtsc, SIGTRAP.

Формат практики

Практика следует сразу за объяснением приёма. В курсе задачи трёх видов: задания с файлами и точным ответом (обычно флаг вида vsosh{...}), задачи в тренажёре кода на Python 3, где нужно написать декодер или решатель, и задачи-сервисы, которые запускаются в контейнере. По ходу теории — 120 вопросов самопроверки, а ключевые темы закреплены разбором реальной reverse-задачи ВСОШ.

Следующий урок открывается после набора 50% баллов за текущий и подтверждения его завершения. Дополнительные уроки маршрут не блокируют.

Подготовка к этапам ВСОШ

Материалы курса размечены по уровню и помогают выстроить подготовку последовательно.

  • Модуль 1 (бесплатно) — фундамент: как процессор исполняет код, регистры, память, стек, ассемблер x86-64.
  • Модуль 2 — инструменты: триаж, Ghidra, gdb + pwndbg, IDA Free и radare2, машина участника ВСОШ и маршрут от файла до флага на первой задаче олимпиады.
  • Модуль 3 — данные и крекми: кодировки-«матрёшки», чекеры пароля, позиционные и зацепленные ключи, сетевой крекми, флаг, которого нет в strings; 9 задач ВСОШ, из них 5 заключительного этапа.
  • Модуль 4 — нативный ELF: где Ghidra врёт, свой протокол шифрования, деобфускация; 7 задач регионального этапа. Дополнительно — z3 и angr.
  • Модуль 5 — не-C и упаковка: Go, .NET, Java, Python, Android с нативной библиотекой, UPX, самомодифицирующийся код; 7 задач ВСОШ, из них 6 заключительного этапа.
  • Модуль 6 — граница реверса: ARM, RISC-V и Эльбрус, патчинг и обход проверок; 6 задач ВСОШ, из них 4 заключительного этапа. Дополнительно — VM-обфускация и анти-отладка.
  • Модуль 7 — финал: mini-CTF из восьми задач с настоящих соревнований без подписи темы.

Что нужно до начала

Что нужно на старте

  • уверенно работать с файлами: скачивать, распаковывать, открывать в терминале;
  • повторять команды в терминале по образцу из урока;
  • писать и запускать короткие скрипты на Python 3.

Что знать заранее необязательно

Ассемблер, устройство процессора и работа отладчика на старте не требуются — им посвящён первый модуль.

Что понадобится технически

  • современный браузер и стабильный интернет;
  • Ghidra (бесплатна, работает на Windows, Linux и macOS, в том числе на Apple Silicon — это Java-программа);
  • по желанию — radare2 с декомпилятором r2ghidra и IDA Free: в курсе показано, что поставить и проверить дома, потому что на олимпиаде интернета нет;
  • для запуска и отладки учебных бинарников — Linux. Лучший вариант для олимпиадника — поставить виртуальной машиной официальный образ машины участника ВСОШ (Kali Linux, выложен организаторами): готовитесь в той же среде, в которой будете решать на туре. Подойдут также Docker или WSL2 — в курсе показано, как их поднять. Отдельно разбираем случай «мака» на M-процессоре: образ олимпиадной машины собран под x86-64 и без медленной эмуляции там не запускается, поэтому мы показываем рабочий путь через Docker и эмуляцию.

Программа курса

Модуль 2. Инструменты и среда реверса

закрыто

Триаж файла, Ghidra, gdb + pwndbg и те же приёмы в IDA Free и radare2, рабочая среда — от машины участника ВСОШ до Apple Silicon — и первая настоящая задача регионального этапа. Платный модуль.

Урок 6. Триаж файла: определяем формат, язык и упаковку за две минуты · 45 мин.
Урок 7. Статический анализ в Ghidra: от машинного кода к читаемому C · 50 мин.
Урок 8. gdb и pwndbg: останавливаем программу и смотрим ей в память · 50 мин.
Урок 9. Лаборатория реверсера: машина участника ВСОШ, Docker и Apple Silicon · 40 мин.
Урок 10. Маршрут решения: от незнакомого файла до сданного флага · 50 мин.
Модуль откроется после покупки курса за инферы 990 .

Модуль 3. Представление данных и чекеры пароля

закрыто

Как данные выглядят внутри программы, как снимать слои кодировок и как обращать проверку пароля — от посимвольных чекеров до сетевых. Платный модуль.

Урок 11. Base64 — не шифр: байты, кодировки и «матрёшки» · 55 мин.
Урок 12. Крекми: где программа говорит «да» и как обратить проверку · 55 мин.
Урок 13. Позиционный ключ: когда операция зависит от номера символа · 55 мин.
Урок 14. Зацепленные байты: длина, блоки и порядок решения · 55 мин.
Урок 15. Сетевой крекми: скрипт на pwntools против сервера с nonce · 50 мин.
Урок 16. Флаг, которого нет в strings: программа собирает его сама · 55 мин.
Модуль откроется после покупки курса за инферы 990 .

Модуль 4. Нативный ELF и снятие обфускации

закрыто

Как читать декомпиляцию настоящего нативного ELF: видеть за local_XX переменные и массивы, восстанавливать циклы и таблицы, ловить ошибки декомпилятора, не пугаться обфускации, а в дополнительном уроке — отдавать клубок условий решателям z3 и angr. Платный модуль.

Урок 17. Где Ghidra врёт: читаем настоящую декомпиляцию и чиним типы · 55 мин.
Урок 18. Свой протокол шифрования: конвейер преобразований и как обратить его целиком · 60 мин.
Урок 19. Деобфускация: мусорный код, приманки и непрозрачные предикаты · 60 мин.
Урок 20. z3 и angr: когда проверку проще описать, чем обратитьдополнительный · 70 мин.
Модуль откроется после покупки курса за инферы 990 .

Модуль 5. Не-C бинарники и упаковка

закрыто

Как понять, что перед тобой не C (Go/.NET/Java/Python/Rust), и вскрыть каждый рантайм своим инструментом: Go-бинари, .NET и Java, Android-APK с нативной библиотекой через JNI, упаковщики и самомодифицирующийся код, который расшифровывает себя только в памяти. Платный модуль.

Урок 21. Не-C бинарник: узнаём рантайм и находим в Go настоящий main.main · 55 мин.
Урок 22. Байткод, который читается почти как исходник: .NET, Java и Android · 75 мин.
Урок 23. Python под PyInstaller: распаковать и декомпилировать .pyc · 45 мин.
Урок 24. Упаковщики: снимаем UPX и разбираем «шифрующие» бинари · 55 мин.
Урок 25. Самомодифицирующийся код: ловим расшифрованный шеллкод в отладчике · 55 мин.
Модуль откроется после покупки курса за инферы 990 .

Модуль 6. Граница реверса: незнакомые архитектуры, pwn и VM

закрыто

Когда бинарь не x86: читаем ассемблер незнакомых архитектур (ARM, RISC-V, Elbrus) и реверс на границе с pwn. Два дополнительных урока: VM-обфускация и анти-отладка — как снять защиту, которой программа мешает отладчику, и почему статику она не трогает. Платный модуль.

Урок 26. ARM, RISC-V и даже Эльбрус: ассемблер, который видишь впервые · 55 мин.
Урок 27. Патчинг и обход проверок: когда программу проще заставить, чем понять · 55 мин.
Урок 28. VM-обфускация: пишем дизассемблер для чужого процессорадополнительный · 60 мин.
Урок 29. Анти-отладка: как бинарь мешает отладчику — и почему это тебя не остановитдополнительный · 65 мин.
Модуль откроется после покупки курса за инферы 990 .

Модуль 7. Финал: mini-CTF

закрыто

Восемь задач с настоящих соревнований без подписи темы: сначала понять, что за файл и какой в нём приём, потом решить. Разминка с совместным началом двух задач и заключительный набор. Платный модуль.

Урок 30. Финал, часть 1. Разминка: четыре задачи без подписи темы · 120 мин.
Урок 31. Финал, часть 2. Заключительный набор: четыре задачи сложнее · 150 мин.
Модуль откроется после покупки курса за инферы 990 .

Чем курс отличается от обычных курсов по ИБ

  • Фундамент снизу. Курс сначала объясняет, как работает процессор и память, и только потом даёт инструменты. Реверс перестаёт быть магией.
  • От реальных задач ВСОШ. В теорию встроены разборы 30 настоящих reverse-задач регионального и заключительного этапов 2023–2026 годов — с указанием года, этапа и класса.
  • Кадры вместо пересказа. Каждый приём показан и командами терминала, и реальными кадрами Ghidra, IDA Free, radare2 и gdb + pwndbg с выносками: видно, куда нажать и что появится на экране.
  • Разнообразие задач. Крекми, кодировки, сетевой чекер с nonce, нативный ELF, обфускация, Go, .NET, Java, Python, Android, упаковщики, игра на SDL2, шеллкод, RISC-V и Эльбрус — не однотипный набор.
  • Видео там, где текст перестаёт помогать. Как работают регистры, стек и память, показано вживую в отладчике на простой программе, а задача регионального этапа «Коллектив 2.0» разобрана на видео.
  • Финал как на соревновании. Mini-CTF из восьми задач с настоящих соревнований без подписи темы: приём нужно узнать самому.
  • Больше, чем нужно для олимпиады. Три дополнительных урока — z3 и angr, VM-обфускация, анти-отладка — для тех, кто хочет решать задачи сильнее олимпиадных.