我可以强制 linux 内核为新的可执行文件使用特定的内存页吗
Can i force linux kernel to use particular memory pages for new executable
当我执行二进制文件时,我希望它们的堆栈段被特殊数据填充。
我所做的只是编写在堆栈上分配巨大缓冲区的程序,调用大量 malloc 和 mmap,例如用 'A' 字符填充所有这些内存。然后我检查并看到我的程序使用了整个内存的大约 80%。然后我停止这个程序并启动另一个程序,它只是遍历堆栈并检查堆栈上的值。反正我看不到我的 'A' 角色。谁能告诉我该怎么做?
UPD
为什么我这样做只是因为一个ctf。我提到了任务。
int func()
{
int i;
if(i == 0xdeadbeef)
system("cat flag");
else
func();
}
int main()
{
func();
}
不,不是没有对内核进行重大更改。新的匿名页面总是用零填充,即使你可以用其他东西填充它们,也没有合理的方法可以让它们从旧进程中继承数据。这样做本身就是一个巨大的安全漏洞。
当我执行二进制文件时,我希望它们的堆栈段被特殊数据填充。 我所做的只是编写在堆栈上分配巨大缓冲区的程序,调用大量 malloc 和 mmap,例如用 'A' 字符填充所有这些内存。然后我检查并看到我的程序使用了整个内存的大约 80%。然后我停止这个程序并启动另一个程序,它只是遍历堆栈并检查堆栈上的值。反正我看不到我的 'A' 角色。谁能告诉我该怎么做?
UPD 为什么我这样做只是因为一个ctf。我提到了任务。
int func()
{
int i;
if(i == 0xdeadbeef)
system("cat flag");
else
func();
}
int main()
{
func();
}
不,不是没有对内核进行重大更改。新的匿名页面总是用零填充,即使你可以用其他东西填充它们,也没有合理的方法可以让它们从旧进程中继承数据。这样做本身就是一个巨大的安全漏洞。