在启用了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项目以获取一些利用此功能的信息。
- 1 回答
- 0 关注
- 254 浏览
添加回答
举报
0/150
提交
取消