前言
現(xiàn)在市場中加固apk的方式一般有兩種:
第一種是對(duì)源apk整體做一個(gè)加固,放到指定位置,運(yùn)行的時(shí)候再解密動(dòng)態(tài)加載。
第二種是對(duì)so進(jìn)行加固,在so加載內(nèi)存的時(shí)候進(jìn)行解密釋放。
我們今天主要針對(duì)第一種加固方式進(jìn)行dex文件的獲取。
一、工具準(zhǔn)備
1.一部Root過的Android手機(jī)。
2.安裝Xposed模塊。
下載Xposed框架:打開手機(jī)瀏覽器,百度搜索xposed installer,點(diǎn)擊下載。

Xposed框架是一款可以在不修改APK的情況下影響程序運(yùn)行(修改系統(tǒng))的框架服務(wù),基于它可以制作出許多功能強(qiáng)大的模塊,且在功能不沖突的情況下同時(shí)運(yùn)作。當(dāng)前,Per APP Setting(為每個(gè)應(yīng)用設(shè)置單獨(dú)的dpi或修改權(quán)限)、XPrivacy(防止隱私泄露)、對(duì)原生Launcher替換圖標(biāo)等應(yīng)用或功能均基于此框架。
3.安裝DumpDex。(脫殼神器)
打開https://github.com/WrBug/dumpDex, 從這個(gè)頁面下載APK安裝包,或者直接下載源碼進(jìn)行編譯項(xiàng)目到手機(jī)上。
注意在下載源碼進(jìn)行編譯時(shí),你可能會(huì)遇到簽名問題和Run configuration配置問題。但都容易解決。配置問題解決方法:Run configuration中Launch Options選項(xiàng)選為Nothing,因?yàn)榇隧?xiàng)目是插件,沒有啟動(dòng)頁面。
4.下載Dex2jar、JD-GUI 。(用于對(duì)dex文件進(jìn)行分析)
在SOURCE FORGE官網(wǎng) 下載dex2jar的zip包。目前最新版本是2.0,完成后解壓。
在Java Decompiler官網(wǎng) 下載jd-gui,同樣解壓。
二、脫殼過程
- 打開【Xposed Installer】App,在【模塊】菜單中勾選DumpDex插件,然后重啟設(shè)備。
- 打開需要脫殼的App(此App應(yīng)該已加固)。
- 打開【es文件瀏覽器】,勾選側(cè)邊欄菜單內(nèi)“Root工具箱”,在根目錄/data/data目錄下搜索dump,如果脫殼成功,就可以搜索到一個(gè)或多個(gè)dump文件夾,里面就是目標(biāo)dex。(系統(tǒng)自帶文件瀏覽器,大多找不到root后的data目錄)
三、Dex轉(zhuǎn)Jar相關(guān)
- 上面三步是脫殼過程。如果前面已順利得到dex文件,那么現(xiàn)在就要把dex文件取到PC上。
由于dex文件在root目錄下, Android Studio的Device File Explorer沒有copy權(quán)限,一個(gè)便捷的方法是在手機(jī)上把這些文件拷貝到外面的一些可見目錄中。然后在Android Studio的Device File Explorer中copy這些文件到PC。 - 把dex文件存copy到d2j目錄下,在終端執(zhí)行反編譯命令,生成jar文件后用jd-gui打開。
- 最后,讓太君去開一瓶82年的雪碧,慶祝一下????
總結(jié)下來發(fā)現(xiàn),對(duì)360加固(免費(fèi))、愛加密(收費(fèi))、娜迦加固(收費(fèi))等加固包都成功拿到dex文件。沒加固的不管你怎么混淆都很容易被人分析得干干凈凈,免費(fèi)版的加固可以防止大多數(shù)只會(huì)反編譯的小白,對(duì)于普通攻擊者還是很有效果的。目前用此方法來看,無論免費(fèi)版還是商業(yè)版,都能被破解,所以,產(chǎn)品設(shè)計(jì)的時(shí)候從安全角度出發(fā),增強(qiáng)業(yè)務(wù)層面的安全風(fēng)控,遠(yuǎn)比把重心放在加固上重要。
