上篇文章簡(jiǎn)單介紹了apktool的使用
方法,本片文章主要介紹無(wú)源碼動(dòng)態(tài)調(diào)試。
為何要使用無(wú)源碼動(dòng)態(tài)調(diào)試
目前很多app都針對(duì)反編譯及二次打包做了處理,想要使用源碼進(jìn)行調(diào)試需要花費(fèi)很多時(shí)間,需要反編譯app,設(shè)置為可調(diào)試狀態(tài),重新打包。而使用動(dòng)態(tài)調(diào)試,只需要smali文件及原始app即可,雖然smali文件的可讀性較差些,需要對(duì)比源碼來(lái)進(jìn)行。
準(zhǔn)備工作:
1.apktool 反編譯出的smali文件
2.jadx 查看源代碼
3.root 手機(jī)
4.Android Studio
前兩步比較簡(jiǎn)單,上篇文章已經(jīng)介紹過(guò)了,動(dòng)態(tài)調(diào)試需要運(yùn)行app,我選擇的是模擬器,國(guó)內(nèi)的很多模擬器做的比官方的還要好......,基本自帶root,只要將設(shè)備的secure 關(guān)閉即可。
手機(jī) root
我使用的是setprops,按照文檔操作生成setprops,并拷貝到手機(jī)的data/local/tmp/ 目錄下,然后關(guān)閉secure ./setprops ro.secure 0 打開(kāi)debugable 即可。
接下來(lái)以debug模式運(yùn)行你要調(diào)試的app
adb shell am start -D -n com.xxx/.modules.main.SplashActivity
查找應(yīng)用進(jìn)程的端口并進(jìn)行轉(zhuǎn)發(fā) adb forward tcp:8700 jdwp:3296
修改系統(tǒng)屬性的方式,每次重啟都會(huì)失效,不過(guò)操作很簡(jiǎn)單,修改鏡像的方式可以一勞永逸但是較為麻煩。
AndroidStudio導(dǎo)入工程
首先創(chuàng)建一個(gè)目錄 DebugApp,并創(chuàng)建src 子目錄,將你反編譯后的工程復(fù)制到src目錄下。
studio 導(dǎo)入

一路next。
在src 目錄右鍵

設(shè)置為
source root,我這里已經(jīng)設(shè)置了,所以沒(méi)有這個(gè)選項(xiàng)。
然后設(shè)置sdk

之后配置調(diào)試


添加一個(gè)remote 并設(shè)置端口。
準(zhǔn)備工作完成,在需要調(diào)試的smali代碼里打斷點(diǎn),然后 run->debug即可。