一、什么是動態(tài)調試
其實是動態(tài)調試 Smail文件 ,一種逆向分析的方式,通過 jdwp 調試相關進程。
一般在做競品分析時會用到類似的手段。Android studio支持apk分析,所以操作起來還是比較簡單的。
二、前期準備
2.1 使apk可調試
正常情況下release包是不允許調試的,所以必須先讓apk可調試,一般有兩種方法:
- 使用
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">
- 直接在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


