Phi*_*ler 17 linux gcc heap-randomization aslr
我正在为并行程序开发一个运行时系统,它可以利用跨多个进程的公共地址空间布局,可能分布在几千个节点上.很多时候,为此环境构建的软件在默认启用地址空间随机化的Linux系统上运行,用户可能不希望或无法在系统范围内禁用它(通过sysctl -w kernel.randomize_va_space=0等).这对并行程序施加了一些限制,并且可能损害性能.因此,我们想弄清楚如何为我们构建的二进制文件禁用它.安全性不是问题,因为该软件始终在受控环境中运行.
我发现了对各种标志和变量的引用,比如ET_EXEC,EF_AS_NO_RANDOM(显然从未合并过?)和PF_RANDOMIZE,但我找不到任何描述我可以做什么来设置这些标志的文档.一个理想的答案会告诉我什么编译器/汇编器/链接器标志将禁用生成的二进制文件的随机化,以及它工作的工具链/内核的版本.接下来最好的是在构建二进制文件后执行相同操作的工具.
由于我确信有人会提出建议,我已经知道我们可以在运行时进行此更改setarch -R,但最好将其记录在可执行文件中.
看起来paxctl -rx应该做的伎俩,但它似乎不适用于不包含PaX补丁的内核中使用的当前方法.
Emp*_*ian 14
大概你有一些守护进程在节点上调用你的并行程序.如果是这样,您可以使此公共父级禁用它创建的任何子进程的ASLR.
查看GDB源(7.0或CVS Head)以了解如何执行此操作.它的要点是调用personality(orig_personality|ADDR_NO_RANDOMIZE)之后fork和之前exec.
| 归档时间: |
|
| 查看次数: |
10742 次 |
| 最近记录: |