曾经使用 gdb 等工具进行调试,但我对它们的实现知之甚少。我正在尝试在我的程序中实现一种反调试技术,但对调试知之甚少,我需要一些帮助。我从http://www.julioauto.com/rants/anti_ptrace.htm发现了以下代码
void anti_ptrace(void)
{
pid_t child;
if(getenv("LD_PRELOAD"))
while(1);
child = fork();
if (child)
wait(NULL);
else
{
pid_t parent = getppid();
if (ptrace(PTRACE_ATTACH, parent, 0, 0) < 0)
while(1);
sleep(1);
ptrace(PTRACE_DETACH, parent, 0, 0);
exit(0);
}
}
我想听听各位大师的专家意见,关于上述代码的成功程度以及优缺点是什么?
任何帮助,将不胜感激。