工具下載
- apktool :https://ibotpeaches.github.io/Apktool/install
- dex2jar:https://github.com/pxb1988/dex2jar
- jd-gui:http://jd.benow.ca




這樣環境就配好啦,打開終端,輸入
apktool
命令,看到以下輸出說明apktool配置成功


反編譯
終端輸入cd /Users/zachary/zachary/MyTest
進入到測試apk所在目錄,輸入apktool d test.apk
開始反編譯


下載完 dex2jar和 jd-gui解壓一下就可以了,復制到MyTest目錄方便操作

sh dex2jar-2.0/d2j-dex2jar.sh test.apk
(如果提示Permission Deny權限問題,先輸入命令
chmod +x dex2jar-2.0/d2j-dex2jar.sh
改一下權限就好了)

運行結束,在MyTest目錄會生成文件test-dex2jar.jar,就是我們需要的java代碼壓縮文件

回編譯
剛才我們執行apktool d test.apk
反編譯得到了test目錄

apktool b test

成功之后,test目錄下會生成build和dist目錄

build目錄下存放的是打包后的dex文件和資源文件(和apk解壓后一樣一樣的)

image.png

重新簽名
復制簽名文件到dist目錄下方便操作

jarsigner -verbose -keystore [your_key_store_path] -signedjar [signed_apk_name] [usigned_apk_name] [your_key_store_alias] -digestalg SHA1 -sigalg MD5withRSA
字段說明:
- [your_key_store_path]:密鑰所在位置的絕對路徑
- [signed_apk_name]:簽名后安裝包名稱
- [usigned_apk_name]:未簽名的安裝包名稱
- [your_key_store_alias]:密鑰的別名


簽完名后,在dist目錄下就可以看到簽完名后的apk了

后話
反編譯的時候,也可以把test.apk的拓展名改成test.zip解壓出來

把classes.dex復制到dex2jar-2.0路徑下

./d2j-dex2jar.sh classes.dex

同樣可以得到classes-dex2jar.jar

反編譯,再回編譯,同樣可以得到classes.dex,就在這個路徑下


收工.png