1. apktool步骤
- 下载apktool,重命名为
apktool.jar - 创建
apktool脚本,参照这里 - 创建
apktool文件夹,将apktool.jar和apktool放进去 -
在终端配置,步骤如下:
//可使用:右击Finder -> 前往文件夹 ->输入/usr/sbin ->前往 ~ user:cd /usr/local/bin //如果不存在,可以执行 sudo mkdir bin ~ bin: cd Desktop/apktool/ //将apktool.jar 和apktool copy 到bin下 ~ apktool: sudo cp apktool.jar apktool /usr/local/bin ~ sudo apktool ~ apktool: ./apktool d test.apk, 进入apktool文件夹下,进行反编译- 此时
xml文件都已经反编译成功
2. 查看java源码
- 下载dex2jar,解压
- 把
dex2jar文件放到apktool文件夹下 - 把
apk文件解压,可以直接解压或者修改后缀.zip再解压,找到classes.dex文件,把它放进dex2jar文件夹下 cd Destop/apktool/dex2jar,进入dex2jar文件夹下-
执行
sh dex2jar.sh classes.dex,会生成一个classes_dexjar.jar文件 - 下载jd-gui,解压
- 打开
jd-gui,将生成的classes_dex2jar.jar在窗口下查看
3. 编译,签名,打包
- 编译
java -jar /usr/local/bin/apktool.jar b apk - 重新打包
apktool b Destop/apktool/test - 自动签名
jarsigner -verbose -keystore new.keystore -signedjar newTest.apk test.apk new.keystore; 签名new.keystore, 签名后的apkNamenewTest.apk,签名前的apkNametest.apk
遇到的问题
-
sudo: apktool: command not found$ apktool zsh: permission denied: apktool $ sudo apktool Password: sudo: apktool: command not found官方有提示:
Note - Wrapper scripts are not needed, but helpful so you don’t have to type java -jar apktool.jar over and over../apktool d test.apk -
d2j-dex2jar.sh: line 36: ./d2j_invoke.sh: Permission denied
sh d2j-dex2jar.sh classes.dex ./d2j-dex2jar.sh: line 36: ./d2j_invoke.sh: Permission denied需要增加权限
sudo chmod +x d2j_invoke.sh
apktool命令
- 反编译APK命令
apktool d [-f] <file.apk> <dir> - 编译修改好的文件
apktool b <dir> - install -framework