Что нужно знать заранее: связь с ассемблером и архитектурой
Карта знаний, на которые опирается реверс-инжиниринг.
Машинный код — последовательность байтов-инструкций, которые напрямую исполняет процессор; ассемблер — его человекочитаемая запись.
Зачем нужен ассемблер
Дизассемблер показывает программу на языке ассемблера. Поэтому без базового ассемблера реверс невозможен. Из курса «Ассемблер» нам понадобятся: регистры, инструкции mov, add, cmp, jmp, условные переходы, вызовы функций call/ret и стек.
mov eax, 5 ; положить число 5 в регистр eax
add eax, 3 ; прибавить 3, теперь eax = 8
cmp eax, 8 ; сравнить eax с 8
je equal ; если равно — прыгнуть на метку equal
Что взять из архитектуры компьютера
- Регистры — быстрые ячейки внутри процессора (
eax,rbx, указатель стекаrsp, счётчик командrip). - Память и адреса — программа и данные лежат по адресам; реверс часто крутится вокруг «что лежит по этому адресу».
- Стек — область для локальных переменных и адресов возврата; понимание стека критично для разбора функций.
- Системы счисления — байты записывают в шестнадцатеричном виде (hex), адреса тоже.
Как работает под капотом: путь от 32 до 64 бит
Большинство современных программ — 64-битные (архитектура x86-64). Регистры стали шире: eax → rax, появилось больше регистров (r8–r15), аргументы функций часто передаются через регистры, а не через стек. Для ARM (мобильные устройства) набор инструкций другой, но принципы те же.
Связь с этичным хакингом
Реверс — часть арсенала специалиста по безопасности. Из курса «Этичный хакинг» сюда переходят идеи: модель угроз, изоляция (песочница), ответственное раскрытие, и снова — работа только с разрешения. Реверс отвечает на вопрос «как именно устроена эта программа изнутри», а этичный хакинг — «как это знание применить для защиты».
Частые ошибки
- Прыгать в реверс без ассемблера — будет непонятно вообще ничего.
- Путать десятичные и шестнадцатеричные числа:
0x10— это 16, а не 10. - Игнорировать стек — половина логики функций живёт именно там.
Итог
- Реверс стоит на трёх китах: ассемблер, архитектура (регистры/память/стек), системы счисления.
- Современная цель чаще всего x86-64; для мобильных — ARM.
- Этика и изоляция приходят из этичного хакинга.