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