如何解决为什么我的程序的输出是secret的值?
#define INT_MAX 2147483647
#define INT_MIN (-INT_MAX-1)
int main()
{
int secret = 0x12345678;
int array[1] = {0};
printf("%d",array[INT_MIN+1]);
} 代码在没有堆栈保护器的情况下运行。
问题是关于整数溢出,但我不明白为什么它会起作用,因为 INT_MIN + 1 的值是 -2147483647。如果我想打印秘密的值,我需要写:array[-1]
解决方法
看看你的代码, printf 返回 0 因为它是一个 int 数组,而不是秘密。 我认为由于索引出站存在不可预测的行为。您正在声明一个包含 1 个元素的数组,但指的是该数组的出站索引。也许这个 post 会有所帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。