Моисей Сутулин

С 2013 года в IT и образовании. Начинал с веб-разработки и Python, разрабатывал программное обеспечение, занимался пентестом. Сейчас сфокусирован на реверс-инжиниринге и Linux. Создаю курсы и пишу статьи для журналов «Хакер», «Системный администратор» и для Хабра. Веду сообщество «Хакерская кузница».

Подход к обучению

123

123

123

Курсы

Белый хакер: анализ файлов в Linux

Научитесь анализировать подозрительные файлы в Linux: определять истинный тип, находить скрытые данные, извлекать вшитые программы, перехватывать пароли и отслеживать вредоносное поведение. Все на реальных кейсах с поиском флагов.
Этот курс является базой для дальнейшего изучения реверс-инжиниринга, анализа вредоносного ПО, форензики в Linux и участия в CTF-соревнованиях. После него вы будете готовы осваивать дизассемблеры (Ghidra, IDA Pro) и отладчик GDB.

5 модулей

На Stepik

Основы двоичного анализа

Цикл статей по основам двоичного анализа

123

Статический анализ бинарных файлов стандартными консольными средствами Linux. Часть 1

Статический анализ бинарных файлов в Linux: определяем истинный тип через file, ищем строки (strings), сигнатуры (xxd), извлекаем скрытые программы (dd). Без запуска и сторонних инструментов.

#1

23.06.2026

СА № 281 (Апрель, 2026)

Статический анализ бинарных файлов стандартными консольными средствами Linux. Часть 2

Вычисляем точный размер ELF через заголовок и секции. Осваиваем readelf, nm, objdump. Извлекаем и анализируем скрытые программы без запуска.

#3

13.07.2026

СА № 282 (Май, 2026)

Внутреннее устройство Linux

123

123

Как программа попадает в память: от execve до main

Вы когда-нибудь задумывались, что происходит внутри Linux после того, как вы вводите ./program в терминале и нажимаете Enter? Что именно происходит дальше? Как ядро находит файл? Как загружает его в память? Кто вызывает main? И как на всё это посмотреть вживую? Разберемся на примере пустой программы empty_sleep.

#6

18.05.2026

Хабр

Релокации. Разбираемся, как Linux-программа находит функцию во время выполнения

Когда программа в Linux вызывает printf, sleep или любую другую функцию из динамической библиотеки, ее реальный адрес заранее неизвестен из‑за ASLR. Тем не менее вызов каким‑то образом срабатывает. В этой статье мы шаг за шагом разберем, как работают механизмы PLT, GOT и релокации, проследим процесс разрешения адресов с помощью objdump, readelf и GDB, а также увидим вживую, что происходит при первом и последующих вызовах библиотечной функции.

#2

08.07.2026

Хакер № 328

Карточки

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

Когда ты вызываешь sleep() в Linux, программа понятия не имеет, где эта функция лежит в памяти. ASLR каждый раз меняет адрес libc. Как она её находит?