Я изменяю исполняемый файл с помощью шестнадцатеричного редактора, и мне нужно вызвать функцию и передать некоторый текст в качестве параметра.Мой код находится в разделе .text, и моя строка закодирована в разделе .data под ним.Скажи, что моя строка "АААА".Адрес строки начинается с "0x008000".Я пытаюсь выдвинуть строку следующим образом:
push [0x008000] FF 35 00 08 00
call function FF 15 11 11 11
Вызов функции работает со значениями по умолчанию NULL, поэтому я знаю, что вызываю ее правильно.
Проблема в вызове кода операции для него.Я борюсь с пониманием формата кода операции для push.Можно ли толкнуть адрес строки напрямую, как это?Я открыл свой исполняемый файл в IDA, чтобы получить более полное представление о том, как существующий код перемещает строки, но я не смог найти четкого примера того, как строковый адрес напрямую помещается в стек.Большинство строк в дизассемблированном коде либо хранятся в локальном стеке, либо вызываются меткой, которая переходит к смещению, которое получает что-то из стека.Признаюсь, я не совсем знаю, как работают метки, потому что на самом деле не существует точки, где строка, хранящаяся в памяти и легкодоступная, явно помещается в стек.
Любые объяснения приветствуются.