Автор темы
Допустим, ты решил по-настоящему разобраться в устройстве Linux: формат ELF, ABI, как загрузчик маппит секции, что происходит между _start и main. Не на уровне «слышал про .text и .data», а чтобы читать вывод readelf и понимать каждую строку.
Перед тобой два пути.
Путь А: теория как фундамент. Берёшь книгу (допустим, «Learning Linux Binary Analysis» или спецификацию ELF), читаешь главу от начала до конца, делаешь конспект. Только после этого открываешь терминал и проверяешь прочитанное. Плюс: картина складывается целиком, ты не путаешь термины. Минус: через 80 страниц без практики мозг отключается, и ты забываешь, зачем начинал.
Путь Б: теория как справочник. Компилируешь минимальный .c файл, сразу натравливаешь objdump -d и readelf -a, смотришь на вывод и гуглишь каждое незнакомое поле. Книгу открываешь точечно, когда упёрся. Плюс: каждый факт сразу привязан к реальному байту. Минус: без системы легко нахвататься обрывков и пропустить важные связи между секциями, сегментами и релокациями.
На практике многие комбинируют: прочитал раздел, тут же написал код, разобрал бинарь. Но пропорция у всех разная.
Ты сначала читаешь главу целиком и только потом открываешь терминал, или запускаешь objdump на первом же примере и разбираешься по ходу? Что выбираешь и почему.