淺談android反調試之 API判斷


反調試:利用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 掉改函數的調用










免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM