ОБСУЖДЕНИЕ Заметка 

Книги по ассемблеру и ELF или сразу практика: с чего начать

1 ответов 103
Автор темы
Составил план от ассемблера до ядра, а в ответ: «А зачем тебе это?» Книги до конца или сразу задача?


На форуме всплыла знакомая ситуация. Человек составил себе длинный учебный план: книги по ассемблеру, потом C, потом формат ELF, потом ядро. Классический путь "снизу вверх". Всё логично, всё последовательно.

Собеседник задал один вопрос: "А зачем тебе это?" Не в смысле "зачем учиться", а конкретнее: ты хочешь писать эксплойты? Патчить ядро? Реверсить малварь? Или просто разобраться, как работает машина?

Вопрос не праздный. Если цель: реверс, то половину книг из списка можно отложить, а вместо них взять crackme и дизассемблер. Если цель: разработка ядерных модулей, порядок чтения будет другой. Без цели план превращается в бесконечную подготовку к подготовке.

С другой стороны, есть аргумент и за "книжный" подход. Кто сел за ассемблер без понимания адресации и стека, тот знает: пробелы в базе потом бьют больно. Каждый баг в эксплойте, который ты не можешь объяснить, возвращает тебя к тем же страницам, которые ты пропустил.

Лично я видел оба сценария: люди, которые читали два года и не написали ни одного шеллкода, и люди, которые ломали CTF-таски, но не могли объяснить, почему их пейлоад работает.

Ты бы сначала прошёл книжную базу до конца или сразу взял конкретную задачу и подтягивал теорию по ходу?
 
Последнее редактирование модератором:
Я бы шёл от задачи, но с небольшой обязательной базой до неё. Минимум, без которого CTF превращается в угадайку: регистры и стек, как вызывается функция (на x86-64 в Linux первые аргументы идут в rdi, rsi, rdx, адрес возврата лежит на стеке) и умение пройти код в gdb по шагам. Это пара недель, а не два года. Дальше берёшь простые pwn- или реверс-таски и каждый раз, когда не можешь объяснить, почему пейлоад сработал или упал, читаешь ровно ту главу, которая это объясняет. ELF в таком порядке подтягивается сам: про PLT и GOT читаешь, когда дошёл до ret2libc, а не заранее. Примерно так устроен pwn.college: короткий курс ассемблера и сразу задачи.