iOS應(yīng)用調(diào)試檢測以及反調(diào)試

一、檢測調(diào)試

當(dāng)一個應(yīng)用被調(diào)試的時候,會給進(jìn)程設(shè)置一個標(biāo)識(P_TRACED),我們可以通過檢測該進(jìn)程是否有設(shè)置這個標(biāo)識來檢測進(jìn)程是否正在被調(diào)試以保護(hù)好我們的應(yīng)用。

為了讓這個函數(shù)以inline方式編譯,需要設(shè)置編譯器的優(yōu)化選項(xiàng),-0z(函數(shù)以inline方式編譯),-fast(加快編譯速度)。

如果你不確信產(chǎn)生的目標(biāo)代碼以inline的方式編譯該函數(shù),你也可以將其轉(zhuǎn)化成宏的方式。

當(dāng)前該方法只能檢測debugger或dtrace的調(diào)試,而不能阻止非法代碼注入或者cycript依附。

二、阻止調(diào)試(阻止GDB依附)

調(diào)用ptrace設(shè)置參數(shù)PT_DENY_ATTACH,如果有調(diào)試器依附,則會產(chǎn)生錯誤并退出。關(guān)于PT_DENY_ATTACH的說明如下:

這時再使用gdb attach的話會產(chǎn)生錯誤:

Segmentation fault: 11

或者使用gdb run該應(yīng)用也會產(chǎn)生錯誤:

Program exited with code 055.


當(dāng)然該方法也會被調(diào)試者下斷點(diǎn)的方式來動態(tài)繞過或者使用IDA等反匯編工具打補(bǔ)丁繞過,所以我們應(yīng)該在程序的多處地方調(diào)用該方式。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • layout: wikititle: iOS逆向分析筆記categories: Reverse_Engineeri...
    超哥__閱讀 11,585評論 3 16
  • 前提 眾所周知,iOS系統(tǒng)安全性非常高,很少出現(xiàn)漏洞,幾乎不會中毒。大家認(rèn)為蘋果系統(tǒng)的封閉性會使iOS APP安全...
    小楓123閱讀 1,543評論 0 10
  • 程序調(diào)試的基本思想是“分析現(xiàn)象->假設(shè)錯誤原因->產(chǎn)生新的現(xiàn)象去驗(yàn)證假設(shè)”這樣一個循環(huán)過程,根據(jù)現(xiàn)象如何假設(shè)錯誤原...
    Manfred_Zone閱讀 16,754評論 0 26
  • iOS包含許多“秘密”調(diào)試工具,包括環(huán)境變量、偏好、GCB的常規(guī)調(diào)用,等等。本技術(shù)說明描述了這些工具。如果你開發(fā)i...
    栗子烤肉閱讀 3,378評論 1 7
  • 我正在參加小學(xué)生作文大賽——游戲,非小學(xué)生組。(年齡非小學(xué)生,智商是,別懷疑!) 先看看無關(guān)緊要的圖。一看就知道是...
    央烊養(yǎng)樣閱讀 907評論 10 13

友情鏈接更多精彩內(nèi)容