Android Studio 動態(tài)調試apk

一、什么是動態(tài)調試

其實是動態(tài)調試 Smail文件 ,一種逆向分析的方式,通過 jdwp 調試相關進程。
一般在做競品分析時會用到類似的手段。Android studio支持apk分析,所以操作起來還是比較簡單的。

二、前期準備

2.1 使apk可調試

正常情況下release包是不允許調試的,所以必須先讓apk可調試,一般有兩種方法:

  1. 使用 apktool 工具反編譯apk,修改 AndroidManifest.xml 文件,然后再重簽名二次打包:
  <!-- application標簽加上android:debuggable="true" -->
  <application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:debuggable="true">
  1. 直接在root或者模擬器上運行

運行后,在 Logcat 中可以找到對應進程即可。

可調式.png

2.2 下載smalidea插件

Android Studio 中 Smali Support 插件不支持 smali 斷點,所以需要重新下載一個插件,具體操作可以參考:解決新版Android Studio 4.0+無法斷點調試smali問題

2.3 Android Studio 支持導入apk

啟動 Android Studio 或者 點擊File 是否有 Profile or Debug APK 這個選項:

導入apk.png

導入apk2.png

如果沒有找到,應該是 Android APK Support 這個插件沒有啟用,Settings中啟用該插件即可。

在這里插入圖片描述

三、動態(tài)調試smali文件

3.1 調試模式啟動app

運行下面命令,啟動app:

adb shell am start -D -n 包名/.你要調試的界面
例如:
adb shell am start -D -n com.francis.testxpose/.MainActivity

查看進程號:

adb shell ps | findstr 包名
例如:
adb shell ps | findstr com.francis.testxpose


獲取進程號.png

3.2 端口映射

使用 jdwp 轉發(fā)端口:

adb forward tcp:調試端口號 jdwp:進程號
例如:
adb forward tcp:8900 jdwp:12618

3.3 創(chuàng)建remote調試

  • 使用 Profile or Debug APK 選項導入apk:

    導入apk3.png

  • 創(chuàng)建 remote 調試模式

    創(chuàng)建remote1.png

創(chuàng)建remote2.png
創(chuàng)建remote3.png

3.4 下斷點

找到你想調試的代碼下斷點。


下斷點.png

3.5 啟動調試

斷點.png
啟動調試.png
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容