反調試:利用Java層API來判斷Android程序是否是處於被調試下。
1.
直接調用系統的android.os.Debug.isDebuggerConnected()方法
我們進行動態調試的時候,其中有一個步驟是進行jdb連接操作:jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=8700,當接連成功之后,android.os.Debug.isDebuggerConnected() 這個方法就會ture,
那么我們可以利用這個api來進行判斷當前應用是否處於調試狀態來進行反調試操作。

解決方案:
使用反編譯工具方便程序,然后搜索
isDebuggerConnected() 關鍵字, 然后Nop 掉改函數的調用
反調試:判斷當前應用屬性:ApplicationInfo.FLAG_DEBUGGABLE
調試者為了讓自己的程序能夠調試, 就會在反編譯后AndroidMainfiest,xml 中添加:android:debuggable="true", 然后進行調試。利用這一點我們用於反調試

添加這個屬性之后,我們可以用dumpsys package [packagename]命令查看debug狀態

實現反調試的代碼如下:

解決方案:
使用反編譯工具方便程序,然后搜索getApplicationInfo等
關鍵字, 然后Nop 掉改函數的調用