APK反編譯 修改APK原始碼檔案 重新打包APK踩坑日記
阿新 • • 發佈:2020-08-20
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檔案
至此, 大功告成, 完結撒花~