Когда я выполняю двоичный код, я хочу, чтобы их сегмент стека был заполнен специальными данными. Все, что я делаю, это просто программа для записи, которая выделяет огромный буфер в стеке, вызывает много malloc и mmap и, например, заполняет всю эту память символом «A». Затем я проверяю и вижу, что около 80% всей памяти используется моей программой. Затем я останавливаю эту программу и запускаю другую программу, которая просто проходит стек и проверяет значения в стеке. В любом случае я не вижу своего персонажа «А». Может кто-нибудь сказать мне, как я могу это сделать?Могу ли я заставить linux-ядро использовать определенные страницы памяти для нового исполняемого файла
UPD Почему я делаю это просто из-за одного ctf. Я упоминаю задачу как.
int func()
{
int i;
if(i == 0xdeadbeef)
system("cat flag");
else
func();
}
int main()
{
func();
}
Зачем вам это нужно? –
Как раз для того, чтобы получить это право: вы пишете память одним процессом, завершаете это и жалуетесь, что процесс _different_ не видит данные, которые первый написал? Вы когда-нибудь занимаетесь логической памятью и инкапсуляцией процесса? – Olaf
@ FilipeGonçalves, играя ctf, я упомянул о тривиальной задаче; main {int i; if (i == 0xdeadbeef), то откройте shell} else go recursion – user2779060