当我执行二进制文件时,我希望他们的堆栈段填充特殊数据。 我所做的只是编写程序,在堆栈上分配大量缓冲区,调用很多malloc和mmap,例如用“A”字符填充所有这些内存。然后我检查并看到我的程序使用了大约80%的整个内存。然后我停止这个程序并启动另一个程序,它只是通过堆栈并检查堆栈上的值。我还是看不到我的'A'字符。有人能告诉我我该怎么做?
UPD 为什么我这样做只是因为一个ctf。我提到的任务就像。
int func()
{
int i;
if(i == 0xdeadbeef)
system("cat flag");
else
func();
}
int main()
{
func();
}
答案 0 :(得分:2)
不,不是没有对内核进行大量更改。新的匿名页面总是零填充,即使你可以用其他东西填充它们,也没有合理的方法可以让它们从旧进程中转移数据。这样做本身就是一个巨大的安全漏洞。