Apktool 是一個反編譯Android Apk的第三方工具烘跺。它可以反編譯資源贱除,并在進(jìn)行修改之后重新打包Apk和敬。
官網(wǎng):Apktool - A tool for reverse engineering 3rd party, closed, binary Android apps.
1视粮、安裝 apktool
?注意:apktool 依賴 Java1.8裳瘪。請使用?java -version 查看土浸,是否為1.8或更高版本。
主要的安裝流程:
????1彭羹、下載運(yùn)行腳本黄伊,根據(jù)不同平臺保存為不同的名字。--- 運(yùn)行腳本非必須派殷,但可以避免一次次的重復(fù)敲 java -jar ... ?來執(zhí)行操作
? ? 2还最、下載最新版本的 apktool.jar --- 下載后可能不叫這個名字,但是通過腳本運(yùn)行的話愈腾,要求為這個名字憋活,修改為這個就行
? ? 3、將腳本和jar放到同一個目錄下 --- 官方建議放到指定目錄虱黄,我試過Windows和Mac悦即,并不是一定要放到指定目錄,也可以正常使用
? ? 4橱乱、進(jìn)入命令行辜梳,cd 到相應(yīng)目錄,執(zhí)行命令
2泳叠、手動build源碼生成apktool
? ? apktool的官網(wǎng)上詳細(xì)介紹了如何build源碼生成apktool:Apktool - Build Guide
? ? apktool集合了幾個子工程和依賴到一個工程中作瞄。其中包括:
brut.apktool.lib - 主工程,主要邏輯代碼
brut.apktool.cli - 命令行接口工程
brut.j.dir - 工具工程
brut.j.util -工具工程
brut.j.common -工具工程
? ? 要求JDK8危纫,git(不從github上clone代碼則不需要git)
? ? build的步驟:
? ? ? ? 1宗挥、clone或者下載代碼
? ??????????git clone git://github.com/iBotPeaches/Apktool.git
? ? ? ? 2、在命令行中种蝶,進(jìn)行到項目根目錄下契耿,執(zhí)行g(shù)radlew.bat腳本,其他基于unix的系統(tǒng)執(zhí)行./gradlew
? ? ? ? 3螃征、打包shadowJar搪桂,此jar包會將依賴都打包進(jìn)去。
????????????????gradlew.bat build shadowJar
? ? ? ? 4盯滚、打包混淆過的jar
? ??????????????gradlew.bat build shadowJar proguard
? ? ? ? 輸出目錄:./brut.apktool/apktool-cli/build/libs/apktool-xxxxx.jar
? ? 特別注意:Windows平臺下踢械,目錄深度不能超過255個字符酗电。目前apktool項目最深目錄達(dá)到218個字符!所以apktool根目錄的存放路徑不能超過37個字符D诹小D焓酢!
3德绿、反編譯apk
反編譯命令:apktool d apk路徑
執(zhí)行過程中會輸出主要步驟log
4荷荤、反編譯結(jié)束后,反編譯的內(nèi)容均在目錄下的 相應(yīng)文件夾下 -- 文件夾名字與apk同名
5移稳、重新打包
假如你進(jìn)行了修改蕴纳,現(xiàn)在進(jìn)行重新打包
命令:apktool b 項目目錄
我們使用的就是上一步反編譯后,生成的目錄
重新打包工程中个粱,同樣會輸出主要步驟的log
重新生成的apk位于目錄中的 dist 目錄下古毛,如圖
需要注意的是,重新生成的apk都许,是沒有經(jīng)過簽名的稻薇,不能直接進(jìn)行安裝。關(guān)于apk的簽名胶征,這里不再贅述塞椎,自行百度,非常多睛低。
下一篇案狠,詳細(xì)聊聊,apktool的各種參數(shù)作用钱雷。最終會有 apktool 的源碼解析骂铁。