猿问

带有ASLR的Linux中的堆栈位置

在启用了ASLR的Linux中,用户堆栈地址所在的地址范围是否存在?堆,指令地址(文本部分)呢?通常,是否可以查看地址并判断该地址是用于数据还是用于代码?

编辑:我正在尝试编写一个Pintool,它在返回后查看EIP并检查EIP是否指向数据区域。假设未在该系统上启用NX。

由于某种原因,这被否决了。幸运的是,可以在这里找到答案:https : //security.stackexchange.com/questions/185315/stack-location-range-on-linux-for-user-process/185330#185330


慕码人2483693
浏览 255回答 1
1回答

森栏

cat /proc/self/maps将显示主线程堆栈的初始位置。至少由于以下原因,这可能是不准确的:你不在主线程中程序的任何部分都是使用该-fsplit-stack选项构建的,或者您调用了执行类似操作的库你在一个信号处理程序中,它请求sigaltstack栈您会做一些奇怪的alloca技巧,例如CHICKEN Scheme确实会将堆栈用作堆...另请注意,一般区域不是完全随机的。请参阅AddressSanitizer项目以获取一些利用此功能的信息。
随时随地看视频慕课网APP
我要回答