一指厌、什么是動(dòng)態(tài)調(diào)試
其實(shí)是動(dòng)態(tài)調(diào)試 Smail文件
凹蜂,一種逆向分析的方式,通過(guò) jdwp
調(diào)試相關(guān)進(jìn)程性宏。
一般在做競(jìng)品分析時(shí)會(huì)用到類似的手段群井。Android studio支持apk分析,所以操作起來(lái)還是比較簡(jiǎn)單的毫胜。
二书斜、前期準(zhǔn)備
2.1 使apk可調(diào)試
正常情況下release包是不允許調(diào)試的诬辈,所以必須先讓apk可調(diào)試,一般有兩種方法:
- 使用
apktool
工具反編譯apk荐吉,修改AndroidManifest.xml
文件焙糟,然后再重簽名二次打包:
<!-- application標(biāo)簽加上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或者模擬器上運(yùn)行
運(yùn)行后,在 Logcat
中可以找到對(duì)應(yīng)進(jìn)程即可样屠。
2.2 下載smalidea插件
Android Studio 中 Smali Support
插件不支持 smali 斷點(diǎn)穿撮,所以需要重新下載一個(gè)插件,具體操作可以參考:解決新版Android Studio 4.0+無(wú)法斷點(diǎn)調(diào)試smali問(wèn)題
2.3 Android Studio 支持導(dǎo)入apk
啟動(dòng) Android Studio 或者 點(diǎn)擊File 是否有 Profile or Debug APK
這個(gè)選項(xiàng):
如果沒(méi)有找到痪欲,應(yīng)該是 Android APK Support
這個(gè)插件沒(méi)有啟用悦穿,Settings中啟用該插件即可。
三业踢、動(dòng)態(tài)調(diào)試smali文件
3.1 調(diào)試模式啟動(dòng)app
運(yùn)行下面命令栗柒,啟動(dòng)app:
adb shell am start -D -n 包名/.你要調(diào)試的界面
例如:
adb shell am start -D -n com.francis.testxpose/.MainActivity
查看進(jìn)程號(hào):
adb shell ps | findstr 包名
例如:
adb shell ps | findstr com.francis.testxpose
獲取進(jìn)程號(hào).png
3.2 端口映射
使用 jdwp 轉(zhuǎn)發(fā)端口:
adb forward tcp:調(diào)試端口號(hào) jdwp:進(jìn)程號(hào)
例如:
adb forward tcp:8900 jdwp:12618
3.3 創(chuàng)建remote調(diào)試
-
使用
Profile or Debug APK
選項(xiàng)導(dǎo)入apk:
導(dǎo)入apk3.png -
創(chuàng)建
remote
調(diào)試模式
創(chuàng)建remote1.png
3.4 下斷點(diǎn)
找到你想調(diào)試的代碼下斷點(diǎn)。