2013-01-17 48 views
-1

在用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); 
    } 
} 

我想有关于上述代码将取得多大成功,什么是利弊你大师专家的意见?

任何帮助,将不胜感激。

+2

你想反调试?为什么? – Raptor

+0

其实我正在建立一个图书馆,我不想让其他一些程序能够追踪它。它是一种强迫。 –

+0

而不会让我简单地把你的二进制文件和修补它跳过这些东西? – yiding

回答

5

您实际上可以保护您的算法免受调试或反编译的唯一方法是限制对其二进制文件的访问 - 通过在远程计算机上运行它们并通过TCP/IP访问。 任何本地解决方案最终将在确定的黑客手中失败。