2014-09-28 72 views
0

我的教科书说:注意在这个例子中,你并不是真的擦除堆栈内容。如果你正在存储秘密数据,你应该用零覆盖它,或者(理想情况下)垃圾数据。现在,我们可以让垃圾躺在身边, 。MIPS堆栈 - 擦除内容说明

enter image description here

都不是保存在堆栈中执行此后取出的内容是什么?

add $30, $30, $4 

因为它弹出所有保存的内容。

回答

1

仅增加堆栈指针不会改变堆栈下的内存内容。这与使用C中的字符串变量相同:

char str[200] = { " Secret data" }; 

strcpy(str, "foo"); 

此时,C约定的变量的有用值为“foo”。但当然,数组包含

foo\0Secret data\0< 184 more zero bytes > 

正如该关心一下可以看到字符串中的机密数据的功能,运行恶意代码另一个函数或过程,知道你的代码不会删除它的堆栈可以读取旧“弹出”数据。如果它是一个密码或其他赋予权利的价值,坏人就在前面。