我需要在进程VA空间中进行一些暴力搜索以进行我的研究,因此希望限制我的堆区域的虚拟地址范围 . OS课程告诉我堆在数据和堆栈页面之间的任何地方 . 所以我想通过执行以下操作来缩小我的过程VA范围:

  • 有一个自定义链接描述文件,它在地址范围内的某个地方提供数据的开始和结束(0x7f45f88a6000)

  • 调整fs / binfmt_elf.c使堆栈顶部为(0x8f45f88a6000)而不是随机选择 .

  • 假设我的程序仅使用带有NULL的mmap作为地址

我可以安全地假设我的堆(brk)将在这个地址范围之间 . 我还可以假设所有mmap(NULL,其他args)调用都将在此地址范围之间返回吗?

如果没有解决这个问题的原因是什么?我愿意改变内核源代码,但在哪里?