工作第四天,被要求學習逆向開發(fā)方面的知識,于是先將自己之前寫的未經(jīng)混淆的apk反編譯,記錄之。
1. 工具準備
工具
需要的三件套,下載請戳
- AndroidCrackTool 用于反編譯apk文件
與直接解壓apk不同,用該工具獲得的文件資源可以直接打開閱讀,而直接解壓得到的是字節(jié)碼。 - dex2jar 用于將.dex文件轉(zhuǎn)為jar文件
傳統(tǒng)的Java程序經(jīng)過編譯,生成Java字節(jié)碼保存在class文件中,Java虛擬機通過解碼class文件中的內(nèi)容來運行程序。而Dalvik虛擬機運行的是Davik字節(jié)碼,所有的Davik字節(jié)碼由Java字節(jié)碼轉(zhuǎn)換而來,并被打包到一個DEX(Dalvik Executable)可執(zhí)行文件中,Dalvik虛擬機通過解釋DEX文件來執(zhí)行這些字節(jié)碼。 - jd-gui 用于閱讀源碼
2. 開始工作
使用AndroidCrackTool反編譯apk,設置好目錄點擊執(zhí)行按鈕,出現(xiàn)end字樣即成功。
反編譯apk
在這里可以查看一些資源文件
查看資源文件
將apk以普通解壓的方式解壓出來,找到其中的classes.dex文件,
classes.dex位置
將其復制到dex2jar目錄,使用終端進入dex2jar目錄并執(zhí)行如下命令。
sh dex2jar.sh classes.dex
可以看到在dex2jar目錄下生成了classes_dex2jar.jar的文件。
終端下操作
生成的classes_dex2jar.jar
使用 jd-gui打開classes_dex2jar.jar即可看到源碼,可以看到我的apk并沒有混淆,所以名字都是正常的命名,經(jīng)過混淆的名字大都是些字母。
閱讀源碼