0
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 在分叉子项中被禁用的代码有什么问题?

4

1 回答 1

1

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

于 2016-08-12T03:28:56.043 回答