2013-01-17 44 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訪問。 任何本地解決方案最終將在確定的黑客手中失敗。