首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASLR不起作用?

ASLR不起作用?
EN

Security用户
提问于 2020-05-10 21:52:32
回答 1查看 556关注 0票数 2

我有以下代码:

代码语言:javascript
复制
#include <stdio.h>
#include <stdlib.h>

int main()
{
        int *ptr1 = malloc(16);
        int val1 = 0x12345678;
        printf("stack: %p\nheap: %p\n", &val1, ptr1);
        return 0;
}

编译: gcc -fpie -pie main.c

我想测试aslr在调试器下的行为,所以我启动了gdb会话,中断了main并运行了程序。在main中,我使用'info proc映射‘显示内存布局:

据我所知,由于aslr,这些值应该是随机的。但是每次我重新运行程序时,这些值都保持不变。我正在使用Centos 8,x86_64。我还通过'echo 0>/proc/sys/内核/随机化_va_space‘禁用了内置的内核ASLR,但我认为这并不重要。

我还检查了是否使用checksec启用了ALSR:

这是正常行为还是我漏掉了什么?

编辑:我看到在没有gdb的情况下运行二进制文件时,一切都很好。我能做些什么使它在调试器下工作呢?

EN

回答 1

Security用户

发布于 2020-05-10 22:54:40

为了简化调试,GDB默认关闭ASLR。要重新打开它,请在开始运行正在调试的程序之前执行set disable-randomization off。有关更多详细信息,请参阅https://sourceware.org/gdb/onlinedocs/gdb/Starting.html

票数 3
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/231446

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档