反除錯 -- 利用ptrace阻止偵錯程式附加

馬萬旻發表於2018-07-04

為了方便應用軟體的開發和除錯,UNIX的早期版本就提供了一種對執行時中的程式進行跟蹤和控制的手段,那就是系統的ptrace

這個函式在iOS中沒有提供標頭檔案,我們可在macOS中檢視標頭檔案的具體細節。pteace提供了一個非常有用的引數,PT_DENY_ATTACH,這是一個巨集,這個引數用於告訴系統阻止偵錯程式附加。

  • 首先,可以將macOS下的標頭檔案整體複製出來放到iOS工程下,方便使用。
  • 然後可以使用ptrace函式就可以實現阻止偵錯程式附加了。具體如下
 /*
 arg1:ptrace要做的事情
 arg2:要操作程式的ID
 arg3(地址)\arg4(資料): 取決於arg1
 */
 ptrace(PT_DENY_ATTACH, 0, 0, 0);   
複製程式碼

此時,再使用Xcode除錯或者通過其它方式使用debugserver除錯,都會Crash。

相關文章