工具下載
- apktool :https://ibotpeaches.github.io/Apktool/install
- dex2jar:https://github.com/pxb1988/dex2jar
- jd-gui:http://jd.benow.ca
然后點擊find newest here下載apktool.jar,選擇第一個下載最新版本
下載完把apktool_2.3.3.jar重命名為apktool.jar,然后把apktool.jar和apktool一起拷貝到/usr/local/bin路徑下
這樣環境就配好啦,打開終端,輸入
apktool
命令,看到以下輸出說明apktool配置成功
新建個MyTest目錄方便管理,隨便放個test.apk進去作為測試包
反編譯
1.終端輸入cd /Users/zachary/zachary/MyTest
進入到測試apk所在目錄,輸入apktool d test.apk
開始反編譯
2.編譯結束可以看到MyTest目錄下多了個test文件夾,里面就是反編譯以后的產物,我們想要的AndroidManifest.xml和res/.等資源文件
3.此時資源文件反編譯就完成了,下面繼續反編譯java代碼,這是就要用到dex2jar和 jd-gui
下載完dex2jar和 jd-gui解壓一下就可以了,復制到MyTest目錄方便操作
4.終端進入MyTest目錄,輸入命令sh dex2jar-2.0/d2j-dex2jar.sh test.apk
(如果提示Permission Deny權限問題,先輸入命令chmod +x dex2jar-2.0/d2j-dex2jar.sh
改一下權限就好了)
回編譯
1.剛才我們執行apktool d test.apk
反編譯得到了test目錄
2.回編譯就是執行命令apktool b test
3.dist目錄下存放的是重新打包后的apk文件
重新簽名
1.復制簽名文件到dist目錄下方便操作
2.終端進入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]:密鑰的別名
因為我們把秘鑰和test.apk放在同一路徑,所以密鑰所在位置的絕對路徑直接填testkey就好啦,macjenkinskey是我的秘鑰別名,別誤會(邪惡.jpg)
3.輸一下密碼,看不到輸入的,開始簽名
4.簽完名后,在dist目錄下就可以看到簽完名后的apk了
5.反編譯的時候,也可以把test.apk的拓展名改成test.zip解壓出來
6.終端進入dex2jar-2.0路徑下,執行命令./d2j-dex2jar.sh classes.dex