Java層反調試

安卓程序動態調試須要知足兩個條件。java

1.在AndroidMainfest.xml文件中,在application標籤下,Android:debuggable=true。android

2.系統默認調式,在build.prop(boot.img),ro.debugable=1。app

一: 實例演示java層反調試

以「百度加固」爲例。ide

1.將樣本拖入jdax-gui中,進行反編譯,來到加固程序的onCreate 裏,以下圖所示。函數

Java層反調試

2.找到attachBaseContext方法,裏面有一個判斷,調用這個Debug. isDebuggerConnected函數來檢測程序是否被調試反調,從而執行是否加載so庫的邏輯操做,以下圖所示。ui

Java層反調試

二:繞過Java層反調試的方法

1.使用androidkiller進行反編譯,而後搜索isDebuggerConnected,以下圖所示。debug

Java層反調試

2.過來後,修改判斷條件,將nez改成eqz,以下圖所示。調試

Java層反調試

3.修改smali以後,將apk從新打包,編譯,再簽名便可。xml

小結

介紹了java層反調試的原理,經過一個反調試的例子,實操過掉Java層反調試。blog

相關文章
相關標籤/搜索