apk逆向 - smali動態調試

author: Dlivehtml

date: 2016/10/6shell

0x00 前言

​ 以前有人問過smali的動態調試方法,其實網上已經有不少文章講這些內容,可是爲了方便你們學習,我仍是寫一下讓你們少走點坑吧。ide

0x01 Smali的動態調試

​ 這裏介紹一種比較方便的調試方法,這個調試方法不須要重打包apk,操做簡單也比較經常使用。學習

1.調試環境

​ 推薦一下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.html3d

2.調試步驟

​ 首先使用AndroidKiller反編譯apk,反編譯效果以下:調試

0

​ 使用AS打開(File->Open)反編譯結果所在文件夾(Project)

1

​ 在AS中配置遠程調試,打開Run->Edit Configurations,添加遠程調試 (點擊以下圖加號選擇Remote)

3

​ 配置遠程調試,Name隨便填就好,host爲localhost,端口8700

4

​ 打開monitor(安裝SDK後在命令行下直接輸入monitor便可),若是手機成功開啓了調試功能,能夠在monitor中看到正在運行的apk包名

5

​ 在手機上安裝apk後以在terminal運行以下命令使apk以調試模式運行

adb shell am start -D -n packageName/ActivityName

​ 我測試所使用的apk包名爲com.example.findpass,活動名爲com.example.findpass.MainActivity(可簡寫爲.MainActivity)

6

​ 運行上述命令以後能夠看到手機屏幕上會彈出一個Waitting For Debugger的框,monitor中com.example.findpass進程前會有個紅色的小蟲子的圖標

7

​ 在AS中設置斷點

2

​ 而後選擇Run/Debug,找到剛剛設置的調試選項進行調試便可

你能夠在調試器中看到變量的值