靜態(tài)分析反調(diào)試apk

測試步驟參看

吾愛破解

知識(shí)點(diǎn)兒

  1. 工具ID7.0+Jeb+ApkTool
  2. 根據(jù)程序功能邏輯分析其可能存在反調(diào)試代碼位置。
  3. 拿到APK先在Jeb等反編譯工具中分析程序函數(shù),是個(gè)好習(xí)慣。
  4. IDA使用技巧
  • Ctrl+s打開segment表
  • 右鍵Data轉(zhuǎn)化成數(shù)據(jù)、P鍵轉(zhuǎn)換成函數(shù)、F5轉(zhuǎn)化為C偽代碼、點(diǎn)住函數(shù)按x鍵可以知道被哪里調(diào)用。
    (點(diǎn)進(jìn)dword_1140發(fā)現(xiàn)這部分代碼IDA沒有解析好 這里需要手動(dòng)解析一下 點(diǎn)住dword_1140右鍵Data轉(zhuǎn)化成數(shù)據(jù) 然后鼠標(biāo)放在__unwind按住P鍵就轉(zhuǎn)換成函數(shù)了 這個(gè)函數(shù)就是checkport對(duì)應(yīng)的函數(shù))
  1. .data.rel.ro.local 這個(gè)段里面放的是動(dòng)態(tài)注冊(cè)的函數(shù) ,點(diǎn)進(jìn)去后可以找到動(dòng)態(tài)注冊(cè)的函數(shù)
  2. ADB命令
  • ps 查看包名對(duì)應(yīng)的PID
  • CAT PROC/PID值/status 查看當(dāng)前程序狀態(tài)信息(其中Tracerpid為0,說明沒有被調(diào)試)
  • 修改IDA調(diào)試端口:/data/local/tmp/and7.0 -p 23947
    adb forward tcp:23947 tcp:23947
  • 可以是程序運(yùn)行完,反調(diào)試程序(線程)循環(huán)運(yùn)行,導(dǎo)致主線程堵塞。
  • 可以在init_array和JNI_OnLoad兩個(gè)函數(shù)中開啟線程進(jìn)行反調(diào)試,因?yàn)閕nit_array和JNI)Onload會(huì)在so加載的時(shí)候就開始執(zhí)行。
  • init_array段是在so加載的時(shí)候執(zhí)行的 執(zhí)行順序要優(yōu)先于 JNI_OnLoad 所以這里是最早被執(zhí)行的函數(shù) 把反調(diào)試和so的解密放到這里是比較好的選擇。
    -檢測反調(diào)試的技巧:
    a. 進(jìn)程名中包含android_server,gdbserver,gdb等名稱 則認(rèn)為程序當(dāng)前被動(dòng)態(tài)調(diào)試 退出程序。
    b. 讀取/proc/pid/status文件下的TracePid的值 如果大于0說明程序正在被調(diào)試 退出程序。
    c. 讀取/proc/net/tcp,查找23946端口 如果找到則認(rèn)為程序當(dāng)前被動(dòng)態(tài)調(diào)試 退出程序。

2.對(duì)于thread_create函數(shù)我們可以刷機(jī)改內(nèi)核讓TracePid的值永遠(yuǎn)為0
參考文章《逆向修改內(nèi)核,繞過TracerPID反調(diào)試
3.對(duì)抗SearchObjProcess函數(shù)可以將android_server改成其他名字然后運(yùn)行 比如zs ls ww(張三,李四,王5)
參考文章教我兄弟學(xué)Android逆向番外03 Android逆向必會(huì)命令

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

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

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