1. 程式人生 > 實用技巧 >APK反編譯 修改APK原始碼檔案 重新打包APK踩坑日記

APK反編譯 修改APK原始碼檔案 重新打包APK踩坑日記

1.準備軟體

下載地址:
連結: https://pan.baidu.com/s/1PLUKrjNHio9EYDl9eCckXw 提取碼: rhvr

2.軟體用途

解壓下載的壓縮包, 有以上三個檔案
baksmali-2.0.3.jar工具, 可將解壓縮後apk目錄下的classes.dex檔案轉為smali檔案, 後面對原始碼的修改, 就是針對smali檔案的修改

smali-2.0.3.jar工具, 可將smali檔案重新轉為classes.dex檔案, 用重新生成的dex檔案替換之前解壓apk目錄下的dex檔案, 這樣apk原始碼的修改就成功了

sign_tool目錄下的signapk.jar是個簽名工具, 替換了dex檔案的apk要重新簽名, 才能正常安裝到手機

3.解壓apk獲取classes.dex檔案

apk檔案可通過zip工具直接解壓, 或通過修改apk為壓縮檔案型別在通過zip解壓工具解壓
解壓後的apk目錄下, 有classes.dex檔案, apk原始碼全部編譯到了該檔案

4.修改smali型別原始碼檔案

但classes.dex檔案是無法直接檢視或修改的
我們需要將classes.dex檔案轉為smali型別的檔案, 才能修改檢視原始碼

步驟:
進入apk的解壓目錄下, 可以看到classes.dex

使用cmd命令轉化dex檔案為smali檔案:
java -jar baksmali-2.0.3.jar -x classes.dex

執行完後會在當前目錄生成out目錄, 可以在該目錄找到與原始碼對應的smali檔案
可以使用文字編輯工具, 修改smali檔案, 推薦使用Notepad++修改smali型別檔案

5.重新打包

smali原始碼檔案修改完後, 需要重新打包回dex檔案, 新的dex替換老的dex, 即可實現對apk的修改

在有out目錄的同級目錄下cmd命令:
java -jar smali-2.0.3.jar -o classes.dex out
執行完後, 會生成新的classes.dex, 老的dex會被覆蓋

使用系統自帶的壓縮工具, 將新classes.dex替換到apk並儲存實現原始碼替換

最後重要的一步, 重新簽名apk檔案
把替換好dex檔案的apk複製到sign_tool目錄下
執行cmd命令:
java 
-jar signapk.jar platform.x509.pem platform.pk8 test.apk newtest.apk 說明: test.apk是需要重新簽名的apk檔案 newtest.apk是新簽名後的apk檔案

至此, 大功告成, 完結撒花~