環(huán)境:mac
安裝工具:
1.apktool
2.dex2jar
3.jd-gui
1.反編譯xxx.apk
apktool d xxx.apk
反編譯出來就是apk的源文件,像下面這樣:
這里面要修改代碼的話只能看smali文件 看懂還是比較難 畢竟是編譯后文件 就像js壓縮后的文件一樣 具體的邏輯都看不懂 所以我門需要知道java源文件
2.dex2jar 解壓出java文件
修改xxx.apk 為 .zip/.rar 文件 然后解壓 這時(shí)候會(huì)得到下邊這些:
這里的classes.dex 就是我門需要的
把classes.dex 放到下載好的dex2jar 目錄下 運(yùn)行:
sudo sh d2j-dex2jar.sh classes.dex
得到 classes_dex2jar.jar
用 jd-gui就可以打開classes_dex2jar.jar 文件了
打開來 都是java代碼
還存在的問題:
1.暫時(shí)還沒有說直接修改java代碼然后在轉(zhuǎn)成dex的方法
2.其實(shí)就是java代碼看起來方便些,找到自己要修改的地方,對(duì)應(yīng)著去修改smali文件 然后保存后直接編譯成apk
3.這需要一部分smali基礎(chǔ) 作為前端小白 看了下基本的語法 還是可以改的
注意:在dex2jar目錄下執(zhí)行sudo sh d2j-dex2jar.sh classes.dex時(shí)報(bào)錯(cuò)如下 d2j-dex2jar.sh: 36: d2j-dex2jar.sh: ./d2j_invoke.sh: Permission denied
執(zhí)行:sudo chmod +x d2j_invoke.sh
把xxx.apk
拿到j(luò)ar文件 用jd-gui打開
3.修改smali文件
1C0A6D72-D1F5-44F5-BA20-759267E519C5.png
4.編譯成 apk: apktool b xxx
5.生成簽名
keytool -genkey -alias xxx.keystore -keyalg RSA -validity 20000 -keystore xxx.keystore
6.用簽名來signapk
jarsigner -verbose -keystore xxx.keystore -signedjar xxx_signed.apk xxx.apk xxx.keystore