1. 下載 smalieda
- 下載地址:https://bitbucket.org/JesusFreke/smali/downloads/;
- 由于下載速度比較慢蚊惯,也可使用百度網(wǎng)盤下載 smalidea-0.05.zip庐氮,鏈接:https://pan.baidu.com/s/1JzhhYEv_vKQdOmtcT9OkOA,提取碼:4zj9;
- 注意:下載后不要解壓掩完;
2. 配置
- 打開 AndroidStudio蛤吓,依次點擊 File -> Settings -> Plugins;
- 如下圖所示亿眠,點擊 齒輪 圖標(biāo)碎罚,然后點擊 Install Plugins from Disk;
- 在上面的文件保存路徑下纳像,找到 smalidea-0.05.zip 文件荆烈,點擊導(dǎo)入;
- 如下圖爹耗,表示導(dǎo)入成功耙考。
3. 下斷
- 將反編譯后的 smali 文件導(dǎo)入 AndroidStudio,如果不知道如何將 apk 反編譯成 smali潭兽,請參考我的另一篇文章 《安卓逆向:使用 apktool 將 apk 反編譯成 smali 文件》倦始;
- 打開 smali 代碼,找到調(diào)試位置并打斷點山卦,如果知不知道如何查找代碼位置鞋邑,請參考我的另一篇文章《安卓逆向:jadx-gui 查找方法并在 Android Studio 中定位代碼》;
4. 配置模擬器
- 打開 sdk 存放文件夾账蓉,在 platform-tools 路徑下找到 adb.exe枚碗、AdbWinApi.dll、AdbWinUsbApi.dll 三個文件铸本,將三個文件 復(fù)制肮雨;
- 打開模擬器所在文件夾,找到上述三個文件箱玷,鼠標(biāo)右鍵 黏貼怨规,替換掉文件夾中的三個文件;
5. 連接模擬器
啟動安卓模擬器锡足,此處使用 雷電模擬器波丰;
打開 cmd 命令行,進(jìn)入 模擬器所在文件夾舶得,使用 adb 連接調(diào)試安卓模擬器掰烟;
adb.exe connect 127.0.0.1:5555
-- 此處使用的 雷電 模擬器,端口號為 5555去,其他模擬器參考下表纫骑;
模擬器名稱 ---- 端口號
逍遙游 ---- 21503
夜神 ---- 62001
海馬玩 ---- 26944
網(wǎng)易mumu ---- 7555
天天 ---- 6555
BlueStacks ---- 5555
雷電 ---- 5555
天天安卓 ---- 5037
安卓模擬器大師 ---- 54001
Genymotion ---- 5555
5. 獲取 app 的 packageName/ActivityName
- 使用 adb 安裝 apk 文件到模擬器蝎亚;
adb install apk文件的絕對路徑 # 菜鳥注意:鼠標(biāo)直接將 apk 文件拖至此處 cmd 命令行窗口即可添加 apk 絕對路徑
在模擬器啟動 app,進(jìn)入準(zhǔn)備調(diào)試的頁面惧磺,此處我需要調(diào)試的驗證碼登錄颖对,如下圖;
打開 cmd磨隘,輸入下面命令獲取 packageName/ActivityName
adb shell dumpsys activity activities
- 結(jié)果如下圖缤底,此處得到結(jié)果為 com.gotokeep.keep/.splash.SplashActivity;
6. debug 啟動 app
- 使用 adb 以 debug 方式啟動 apk番捂;
adb shell am start -D -n packageName/ActivityName
- 注意此時模擬器頁面的變化个唧,獲取 PID 進(jìn)程號,如下圖设预;
7. 配置端口轉(zhuǎn)發(fā)
- 可選方法一:打開 DDMS徙歼,在 Name 找到 packageName 對應(yīng)的一欄;
- 可選方法二:使用 adb forward 配置端口鳖枕,注意:此方法個人感覺問題較多魄梯,不推薦使用;
adb forward tcp:8700 jdwp:PID進(jìn)程號
-- 如下圖表示配置成功宾符;
-- 注意:如果遇到 cannot bind to 127.0.0.1:8700 報錯酿秸,參考我的另一篇文章《安卓逆向:adb forward 轉(zhuǎn)發(fā)端口遇到 cannot bind listener: cannot bind to 127.0.0.1:8700 報錯》;
8. 添加模擬器端口號
- 依次點擊 Add Configuration... -> + -> Remote魏烫;
- 在 Port 欄輸入 8700辣苏;
9. 開始調(diào)試
- 在 AndroidStudio 進(jìn)行調(diào)試;
- 如下圖哄褒,調(diào)試開始后稀蟋,斷點被斷下來;