Android Studio 動態調試apk

1、什麼是動態調試

實際上是動態調試 Smail文件 ,一種逆向分析的方式,經過 jdwp 調試相關進程。 通常在作競品分析時會用到相似的手段。Android studio支持apk分析,因此操做起來仍是比較簡單的。android

2、前期準備

2.1 使apk可調試

正常狀況下release包是不容許調試的,因此必須先讓apk可調試,通常有兩種方法:shell

  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 中能夠找到對應進程便可。markdown

可調式.png

2.2 下載smalidea插件

Android Studio 中 Smali Support 插件不支持 smali 斷點,因此須要從新下載一個插件,具體操做能夠參考:解決新版Android Studio 4.0+沒法斷點調試smali問題app

2.3 Android Studio 支持導入apk

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

導入apk.png

導入apk2.png 若是沒有找到,應該是 Android APK Support 這個插件沒有啓用,Settings中啓用該插件便可。ide

apk_support插件.png

3、動態調試smali文件

3.1 調試模式啓動app

運行下面命令,啓動app:工具

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

查看進程號:idea

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

獲取進程號.png

3.2 端口映射

使用 jdwp 轉發端口:

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

3.3 建立remote調試

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

導入apk3.png

  • 建立 remote 調試模式

建立remote1.png

建立remote2.png

建立remote3.png

3.4 下斷點

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

下斷點.png

3.5 啓動調試

啓動調試.png

斷點.png

相關文章
相關標籤/搜索