工作第四天器净,被要求學(xué)習(xí)逆向開(kāi)發(fā)方面的知識(shí)尖淘,于是先將自己之前寫的未經(jīng)混淆的apk反編譯,記錄之倡勇。
1. 工具準(zhǔn)備
工具
需要的三件套逞刷,下載請(qǐng)戳
- AndroidCrackTool 用于反編譯apk文件
與直接解壓apk不同,用該工具獲得的文件資源可以直接打開(kāi)閱讀妻熊,而直接解壓得到的是字節(jié)碼夸浅。 - dex2jar 用于將.dex文件轉(zhuǎn)為jar文件
傳統(tǒng)的Java程序經(jīng)過(guò)編譯,生成Java字節(jié)碼保存在class文件中扔役,Java虛擬機(jī)通過(guò)解碼class文件中的內(nèi)容來(lái)運(yùn)行程序帆喇。而Dalvik虛擬機(jī)運(yùn)行的是Davik字節(jié)碼,所有的Davik字節(jié)碼由Java字節(jié)碼轉(zhuǎn)換而來(lái)亿胸,并被打包到一個(gè)DEX(Dalvik Executable)可執(zhí)行文件中坯钦,Dalvik虛擬機(jī)通過(guò)解釋DEX文件來(lái)執(zhí)行這些字節(jié)碼。 - jd-gui 用于閱讀源碼
2. 開(kāi)始工作
使用AndroidCrackTool反編譯apk侈玄,設(shè)置好目錄點(diǎn)擊執(zhí)行按鈕婉刀,出現(xiàn)end字樣即成功。
反編譯apk
在這里可以查看一些資源文件
查看資源文件
將apk以普通解壓的方式解壓出來(lái)拗馒,找到其中的classes.dex文件路星,
classes.dex位置
將其復(fù)制到dex2jar目錄,使用終端進(jìn)入dex2jar目錄并執(zhí)行如下命令。
sh dex2jar.sh classes.dex
可以看到在dex2jar目錄下生成了classes_dex2jar.jar的文件洋丐。
終端下操作
生成的classes_dex2jar.jar
使用 jd-gui打開(kāi)classes_dex2jar.jar即可看到源碼呈昔,可以看到我的apk并沒(méi)有混淆,所以名字都是正常的命名友绝,經(jīng)過(guò)混淆的名字大都是些字母堤尾。
閱讀源碼