过去曾经使用像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);
}
}
我希望您对专家有关于上述代码的成功程度以及优缺点的专家意见?
任何帮助都将不胜感激。
答案 0 :(得分:5)
实际上保护算法免受调试或反编译的唯一方法是限制对二进制文件的访问 - 通过在远程计算机上运行它们并通过TCP / IP进行访问。 任何 本地解决方案最终都会在确定的黑客手中失败。