- 從0到1:CTFer成長之路
- Nu1L戰隊
- 460字
- 2021-01-07 17:32:13
4.3 APK逆向之反調試
為了保護應用關鍵代碼,開發者需要采用各種方式增加關鍵代碼逆向難度。調試技術是逆向人員理解關鍵代碼邏輯的重要手段,對應的反調試技術則是應用開發者的“鎧甲”。Android下的反調試技術大多從Windows平臺衍生而來,可以分為以下幾類。
1.檢測調試器特征
? 檢測調試器端口,如IDA調試默認占用的23946端口。
? 檢測常用調試器進程名,如android_server、gdbserver等。
? 檢測/proc/pid/status、/proc/pid/task/pid/status下的Tracepid是否為0。
? 檢測/proc/pid/stat、/proc/pid/task/pid/stat的第2個字段是否為t。
? 檢測/proc/pid/wchan、/proc/pid/task/pid/wchan是否為ptrace_stop。
2.檢測進程自身運行狀態
? 檢測父進程是否為zygote。
? 利用系統自帶檢測函數android.os.Debug.isDebuggerConnected。
? 檢測自身是否被ptrace。
? 檢測自身代碼中是否包含軟件斷點。
? 主動發出異常信號并捕獲,如果沒有被正常接收說明被調試器捕獲。
? 檢測某段程序代碼運行時間是否超出預期。
攻擊者繞過上述各類檢測方式最便捷的方式是定制Android ROM,從Android源碼層面隱藏調試器特征。比如,通過ptrace函數檢測是否被ptrace時,可以修改源碼,讓ptrace函數永遠返回非調試狀態,即可繞過ptrace檢測;對系統自帶的isDebuggerConnected函數,也可以通過修改源碼繞過??傊?,熟悉Android源碼,準備一套專門針對反調試定制的系統,能大大加速逆向進程。
推薦閱讀
- 信息安全導論(在線實驗+在線自測)
- 電子支付的規制結構配置研究
- Penetration Testing with Perl
- 模糊測試:強制發掘安全漏洞的利器
- API安全技術與實戰
- CTF那些事兒
- 電腦安全與攻防入門很輕松(實戰超值版)
- 無線傳感器網絡安全與加權復雜網絡抗毀性建模分析
- 網絡關鍵設備安全檢測實施指南
- 白話零信任
- Cybersecurity Threats,Malware Trends,and Strategies
- Hands-On Artificial Intelligence for Cybersecurity
- 交換機·路由器·防火墻(第2版)
- ATT&CK與威脅獵殺實戰
- 黑客攻防從入門到精通:實戰篇(第2版)