0
我的教科书说:注意在这个例子中,你并不是真的擦除堆栈内容。如果你正在存储秘密数据,你应该用零覆盖它,或者(理想情况下)垃圾数据。现在,我们可以让垃圾躺在身边, 。MIPS堆栈 - 擦除内容说明
都不是保存在堆栈中执行此后取出的内容是什么?
add $30, $30, $4
因为它弹出所有保存的内容。
我的教科书说:注意在这个例子中,你并不是真的擦除堆栈内容。如果你正在存储秘密数据,你应该用零覆盖它,或者(理想情况下)垃圾数据。现在,我们可以让垃圾躺在身边, 。MIPS堆栈 - 擦除内容说明
都不是保存在堆栈中执行此后取出的内容是什么?
add $30, $30, $4
因为它弹出所有保存的内容。
仅增加堆栈指针不会改变堆栈下的内存内容。这与使用C中的字符串变量相同:
char str[200] = { " Secret data" };
strcpy(str, "foo");
此时,C约定的变量的有用值为“foo”。但当然,数组包含
foo\0Secret data\0< 184 more zero bytes >
正如该关心一下可以看到字符串中的机密数据的功能,运行恶意代码另一个函数或过程,知道你的代码不会删除它的堆栈可以读取旧“弹出”数据。如果它是一个密码或其他赋予权利的价值,坏人就在前面。