1.寫在開始
最近在學習梆梆殼,在調試的過程中遇到了反調試,很是苦惱,而且每次調試都會被中斷,朋友發了篇文章【1】介紹了其中的一個反調,學習後收穫頗多,給我指明了方向,接下來再對其他反調試進行補充,若有疏漏之處請各位大佬批評指正。 2.反調試之時間軸程檢測
啟動調試後是對文章【1】的驗證,過程大致如下:
運行brpt.py後一路F9,
...#下斷點# 記憶體中擷取模組基地址base = FindModule('linker');#.text:00002464 BLX R4addr = base + 0x2464; #該位移值需要使用IDA靜態查看linker模組的位移值#給linker下斷點AddBpt(addr);#在libc.so中對庫函數下斷點AddBpt(LocByName('fopen'));AddBpt(LocByName('ptrace'));...
當lr為pB54EB0CAE49198754C66F4A57BDB01DF函數時即為第一個反調試的線程建立處,然後會調用libDexHelper.so:pDD8ABF73B0AE99BD998BC5C954A74856,
再按一次F9即可斷到文章中提到的fopen函數處
執行完fopen後,回到調用函數libDexHelper.so:p8878CAA1006835C9D43174C88143BA8B處,然後在如下所示處下斷點,F9執行到此處,觀察寄存器的值並做相應的修改,具體思路就是要跳過libDexHelper.so:AEDC62A8 BLX sub_AEDA6ECC 這個函數調用即可。
執行完成後,會跳出調用函數,來到下圖處將r0寄存器的值修改為0,或將指令#1改為#0即可。
並在p39D6B1EED99DC7E506A9D4E07BD58D3A處下斷,
執行完之後F9,則會跳到p39D6B1EED99DC7E506A9D4E07BD58D3A處,
該函數功能類似kill,具體過程參考文章【1】。
接下來通過靜態分析知道了時間軸程的建立點,如下所示:
具體的時間檢測函數如下:
其中主要就是調用了gettimeofday函數,擷取時間,然後再做如下比較:
不滿足條件則kill掉,
以上便是時間檢測的功能了。 3.反調試之ptrace檢測
接下來是ptrace檢測函數,通過靜態分析ptrace被調用了3次,首先進行PTRACE_ATTACH,第二次調用後和0進行比較,最後進行PTRACE_DETACH,如下所示:
另一處case 13會調用pF77EA32766D841ED6BD10130E181CB0D()也是ptrace檢測,
在p9392640B2E38B72373213C945704CA08處也調用了ptrace檢測,
具體函數如下所示:
其中p1EBFB58D66C99CAD7405904C9B93559D()->p39D6B1EED99DC7E506A9D4E07BD58D3A。 4.函數大致流程
經過上述分析,整理大致調用流程如下(隨手畫的):
5.Hook檢測之Xposed檢測
對於Xposed檢測主要是對相關字串做了比對,如下圖所示:
在做完比對後返回0和1進行比較,最後又會調用那個自己寫的p39D681EED99DC7E506A9D4E07BD58D3A函數,前面提到,該函數功能類似kill,此處做了重新命名為p3_linux_syscal_kill。
6. Hook檢測之substrace檢測
通過靜態分析可知,pAFD3E6E79D2F88D9F3563AE570866D51函數在case2中調用了pB4DACEC3279252082ECED1471A664BF7函數,此函數則為substrace的檢測點,
具體函數如下所示:
當然也是比較的字串,根據以上資訊可以在手機中安裝對應的架構進行動態驗證,由於我的環境沒有安裝該hook架構,故暫未進行動態驗證。 7.小結
根據以上分析,過掉以上反調試就很容易了,具體操作不難,不再贅述,方法可以參考文章【2】。我採用idapython指令碼繞過,終於可以開心的調試了,以上當然不是所有的反調,具體還有其他細節的處理遇到了再根據具體情況加以分析,其中還有inotify沒有分析,具體可以參考另一篇文章【3】。當然,對於梆梆殼這隻是邁出的第一步,還有很多內容等待我們去挖掘。 8.參考引用
【1】https://bbs.pediy.com/thread-223808.htm
【2】https://bbs.pediy.com/thread-218938.htm
【3】https://bbs.pediy.com/thread-223320.htm
*本文原創作者:y0nLandroid,本文屬FreeBuf原創獎勵計劃,未經許可禁止轉載
原文地址: http://www.freebuf.com/articles/es/160656.html