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