ОБСУЖДЕНИЕ На проверке 

Фундамент или инструменты: с чего начинать анализ бинарей

0 ответов 27
Автор темы
Открыл Ghidra, загрузил ELF, а там шум. Теория сначала или сразу дизассемблер?


Типичная ситуация: решил заняться реверсом бинарей. Открыл Ghidra, загрузил ELF, посмотрел на граф вызовов. Что-то понятно, но большая часть листинга выглядит как шум. Непонятно, где заканчивается пролог функции, зачем компилятор вставил именно эти инструкции, почему вызов идёт через PLT, а не напрямую.

Дальше развилка.

Путь А. Сесть за книги. Разобраться в формате ELF: секции, сегменты, таблица символов. Понять ABI: как передаются аргументы, что лежит в стеке при входе в функцию. Прочитать про системные вызовы, чтобы отличать read от write по номеру в регистре. На это уходят недели, зато потом листинг читается осмысленно.

Путь Б. Сразу взять crackme или CTF-таск. Не понял инструкцию: погуглил, запомнил. Встретил незнакомую структуру: посмотрел man. Теория набирается точечно, под конкретную задачу. Быстрее видишь результат, но пробелы могут аукнуться на сложных бинарях.

Оба подхода имеют цену. Первый рискует превратиться в бесконечное чтение без практики. Второй даёт ложное ощущение понимания, пока не встретишь stripped бинарь без символов, где без знания ABI делать нечего.

Ты сначала закапываешься в теорию или сразу открываешь дизассемблер и разбираешься по ходу? Расскажи, в каком порядке шёл и что бы сейчас сделал иначе.