Android簡單的反編譯Apk並重新打包,簽名釋出
本文簡單介紹apk是如何修改logo(ic_launcher),類似的資原始檔修改也可以通過此方式。不過要修改class的話就要涉及到smali的學習了,這裡就暫且不談,後續有需要再做更新。
一、工具介紹:
- apktool:用來反編譯apk,apk重新打包
- autosign:自動簽名工具,將重新打包的apk進行簽名,如果不簽名,無法安裝使用
- jadx-0.6.1-dev-build226:檢視原始碼及目錄結構,相當於dex2jar + jd-gui
二、工具使用
- jadx-0.6.1-dev-build226
雙擊jadx-0.6.1-dev-build226\bin目錄下jadx-gui.bat,選擇test.apk即可看到原始碼及目錄結構,如下
- apktool
該目錄下有三個檔案:aapt.exe,apktool.bat,apktool.jar ,將需要反編譯的APK檔案放到該目錄下,如圖: 在該目錄下,按住Shift,然後右鍵選擇“在此處開啟命令視窗”,輸入一下命令:
apktool.bat d -f test.apk -o test
apktool -f [待反編譯的apk] -o [反編譯之後存放資料夾] 如果反編譯過程中遇到Exception in thread “main” 錯誤,可能是apktool.jar的版本太低,使用高版本不會出現異常。
請往https://ibotpeaches.github.io/Apktool/重新下載,下載到的apktool_xxx.jar檔案改名為apktool.jar,然後替換掉老版本的apktool.jar,重新執行命令應該就正常了。
反編譯之後會得到test 資料夾,開啟test資料夾,裡邊就是反編譯出來的各種資原始檔 然後進行test\res目錄去修改ic_launcher,這裡所有的ic_launcher都要做替換。
修改成功,儲存,重新打包,執行打包命令
apktool.bat b test
在test檔案內會多出兩個檔案如下圖所示: dist檔案內就是我們需要的apk。
- autosign
簽名apk,重新發布
接下來就要用到簽名工具了,如果不經過簽名是不能正確執行的。工具: auto-sign.zip
將打包好的test.apk 拷貝到解壓好的auto-sign資料夾下,執行命令:
java -jar signapk.jar testkey.x509.pem testkey.pk8 test.apk test_signed.apk
test_signed.apk就是簽名後的apk
到此修改資原始檔就大功告成了,也是很簡單的