为了账号安全,请及时绑定邮箱和手机立即绑定

带有ASLR的Linux中的堆栈位置

带有ASLR的Linux中的堆栈位置

慕码人2483693 2021-04-13 16:10:16
在启用了ASLR的Linux中,用户堆栈地址所在的地址范围是否存在?堆,指令地址(文本部分)呢?通常,是否可以查看地址并判断该地址是用于数据还是用于代码?编辑:我正在尝试编写一个Pintool,它在返回后查看EIP并检查EIP是否指向数据区域。假设未在该系统上启用NX。由于某种原因,这被否决了。幸运的是,可以在这里找到答案:https : //security.stackexchange.com/questions/185315/stack-location-range-on-linux-for-user-process/185330#185330
查看完整描述

1 回答

?
森栏

TA贡献1810条经验 获得超5个赞

cat /proc/self/maps将显示主线程堆栈的初始位置。至少由于以下原因,这可能是不准确的:

  • 你不在主线程中

  • 程序的任何部分都是使用该-fsplit-stack选项构建的,或者您调用了执行类似操作的库

  • 你在一个信号处理程序中,它请求sigaltstack

  • 您会做一些奇怪的alloca技巧,例如CHICKEN Scheme确实会将堆栈用作堆

  • ...


另请注意,一般区域不是完全随机的。请参阅AddressSanitizer项目以获取一些利用此功能的信息。


查看完整回答
反对 回复 2021-04-16
  • 1 回答
  • 0 关注
  • 254 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信