2015-12-02 39 views
1

在linux上檢查程序是否在調試器中的簡單方法是檢查if(ptrace(PTRACE_TRACEME, 0, 0, 0) == -1)。在這之後我該如何分離? ptrace(PTRACE_DETACH, 0, 0, 0)不起作用(返回-1)。從ptrace上分離自己調用

+0

我不認爲你可以。如果你正在調試,你不應該相信'ptrace'返回,這樣的測試可以很容易地繞開。 – fuz

回答

0

只有「父」(調試器)才能從被跟蹤的子進程中分離;孩子不可能脫離自己。 man ptrace

 
     PTRACE_TRACEME 
       Indicate that this process is to be traced by its parent. … 

       The PTRACE_TRACEMErequest is used only by the tracee; the 
       remaining requests are used only by the tracer. …