【问题标题】:Does the following code disable ASLR?以下代码是否禁用 ASLR?
【发布时间】:2016-08-12 02:34:10
【问题描述】:
int main(int argc, char **argv)
{
  personality(ADDR_NO_RANDOMIZE);

  if (fork())
  {
    return 0;
  }

  printf("Hook me")

我在练习中遇到了这段代码。根据我的估计,这应该在子进程上禁用 ASLR。但是,我使用 LD_PRELOAD 在 printf 上休眠二进制文件,并在此时附加 gdb。在这一点上,我注意到 ASLR 似乎已启用,具体取决于堆栈地址的变化。 Aslr 肯定是在父进程中启用的。

应该在子进程上禁用 ASLR 吗?阻止 ASLR 在分叉子项中被禁用的代码有什么问题?

【问题讨论】:

    标签: c aslr


    【解决方案1】:

    这不适用于fork,因为fork 会精确复制父级(启用ASLR)的地址空间。尝试改用exec,它应该可以工作。

    【讨论】:

      猜你喜欢
      • 2020-04-19
      • 1970-01-01
      • 1970-01-01
      • 2013-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-21
      • 2014-12-31
      相关资源
      最近更新 更多