Существует двоичный файл, над которым я работаю. Он имеет функцию с адресом, начинающимся с 123. Мне нужно, чтобы мой код выполнял эту функцию.Атака на стек
Двоичный файл принимает байтовый массив размера 'n' и не проверяет границы. Вся задача состоит в том, чтобы переполнить буфер и вызвать плохие вещи.
Опять же, задача - вызвать адрес 123 и заставить его выполнить. У меня сложилось впечатление, что если размер буфера равен, скажем, «4», и я пропускаю 9 символов .., 5 символов будут помещены в стек и выполнены. (это правда?)
Кроме того, для того, чтобы я мог обратиться к адресу, который будет выполнен, я хотел бы сказать «звонок 123». Из того, что я понимаю, «вызов» - «e8», нет?
Эта проблема немного запутанна для меня. Если кто-то может помочь мне лучше понять это, я бы очень ценю это
(Да, это домашнее задание вопрос)
0xE8 - относительный вызов, и вам нужно позвонить по абсолютному адресу. И стек обычно «плавающий». – ruslik
Мне жаль, что у нас не было таких домашних заданий. – ruslik
Просто немного любопытства. Я бы подумал, что класс безопасности, подобный этому, будет иметь предварительное условие для ассемблера. Что происходит? –