我可以强制linux内核使用特定的内存页面来获取新的可执行文件

时间:2015-08-04 19:43:40

标签: c linux linux-kernel loader

当我执行二进制文件时,我希望他们的堆栈段填充特殊数据。 我所做的只是编写程序,在堆栈上分配大量缓冲区,调用很多malloc和mmap,例如用“A”字符填充所有这些内存。然后我检查并看到我的程序使用了大约80%的整个内存。然后我停止这个程序并启动另一个程序,它只是通过堆栈并检查堆栈上的值。我还是看不到我的'A'字符。有人能告诉我我该怎么做?

UPD 为什么我这样做只是因为一个ctf。我提到的任务就像。

int func()
{
    int i;
    if(i == 0xdeadbeef)
        system("cat flag");
    else
        func();
}

int main()
{
    func();
}

1 个答案:

答案 0 :(得分:2)

不,不是没有对内核进行大量更改。新的匿名页面总是零填充,即使你可以用其他东西填充它们,也没有合理的方法可以让它们从旧进程中转移数据。这样做本身就是一个巨大的安全漏洞。