如果地址空间布局随机化 (ASLR) 被禁用,我们是否会有确定性mmap?通过确定性,我的意思是,如果我使用相同的输入一次又一次地运行相同的应用程序,我会得到由mmap?我最感兴趣的是匿名地图。
如果地址空间布局随机化(ASLR)被禁用,我们会有确定性的 mmap 吗?
如果您的应用程序在第 i 个 mmap 时具有完全相同的内存布局(就虚拟地址空间的哪些页面被映射、哪些没有映射而言);那么 mmap 在 Linux 内核中应该是确定性的。
可能会出现一些奇怪的情况,这可能会改变内存布局。例如,附加的命令行参数可以将堆栈移动到较低的地址。有很多文件在 c 运行时(例如语言环境)中进行了 mmaped,如果某些文件的大小与之前的启动相比发生了变化,那么内存布局也会发生变化。甚至堆栈消耗也可能会影响它。
如果您的应用程序通过 malloc 进行的内存分配(大小和分配顺序)发生了变化,则 mmap 将不确定。因此,如果您的应用程序是线程化的;它应该修复 malloc 调用的顺序或将所有 malloc 限制到主线程。
- 默认非固定 mmap 地址解析器是确定性的 IIF VMA 树相同并且先前 mmap 的历史记录相同(有缓存mm->free_area_cache
它在 mmap 调用之间处于活动状态。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)