author: Dlivehtml
date: 2016/10/6shell
以前有人問過smali的動態調試方法,其實網上已經有不少文章講這些內容,可是爲了方便你們學習,我仍是寫一下讓你們少走點坑吧。ide
這裏介紹一種比較方便的調試方法,這個調試方法不須要重打包apk,操做簡單也比較經常使用。學習
推薦一下AndroidStudio(下文簡稱AS)這款IDE,既然Google已經有親兒子AS,我以爲Eclipse其實沒有什麼太大使用必要了。測試
關於怎麼安裝AS我就不說了,網上隨便都能搜到不少帖子。idea
安裝後AS後,想要動態調試Smali還須要安裝一個插件Smalidea,能夠在AS的settings->plugins裏面安裝。(插件下載連接:http://pan.baidu.com/s/1o8RL9jW)插件
個人調試環境是一臺root過的且開啓了調試功能的手機(ps.模擬器應該能夠,我沒試過)命令行
如何開啓調試功能,比較簡單的方法是安裝一個xposed插件:xinstaller(安裝可參考:http://www.open-open.com/lib/view/open1426304176732.html)3d
首先使用AndroidKiller反編譯apk,反編譯效果以下:調試
使用AS打開(File->Open)反編譯結果所在文件夾(Project)
在AS中配置遠程調試,打開Run->Edit Configurations,添加遠程調試 (點擊以下圖加號選擇Remote)
配置遠程調試,Name隨便填就好,host爲localhost,端口8700
打開monitor(安裝SDK後在命令行下直接輸入monitor便可),若是手機成功開啓了調試功能,能夠在monitor中看到正在運行的apk包名
在手機上安裝apk後以在terminal運行以下命令使apk以調試模式運行
adb shell am start -D -n packageName/ActivityName
我測試所使用的apk包名爲com.example.findpass,活動名爲com.example.findpass.MainActivity(可簡寫爲.MainActivity)
運行上述命令以後能夠看到手機屏幕上會彈出一個Waitting For Debugger的框,monitor中com.example.findpass進程前會有個紅色的小蟲子的圖標
在AS中設置斷點
而後選擇Run/Debug,找到剛剛設置的調試選項進行調試便可
你能夠在調試器中看到變量的值