环境: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 文件 然后解压 这时候会得到下边这些:
这里的classes.dex 就是我门需要的
把classes.dex 放到下载好的dex2jar 目录下 运行:
sudo sh d2j-dex2jar.sh classes.dex
得到 classes_dex2jar.jar
用 jd-gui就可以打开classes_dex2jar.jar 文件了
打开来 都是java代码
还存在的问题:
1.暂时还没有说直接修改java代码然后在转成dex的方法
2.其实就是java代码看起来方便些,找到自己要修改的地方,对应着去修改smali文件 然后保存后直接编译成apk
3.这需要一部分smali基础 作为前端小白 看了下基本的语法 还是可以改的
注意:在dex2jar目录下执行sudo sh d2j-dex2jar.sh classes.dex时报错如下 d2j-dex2jar.sh: 36: d2j-dex2jar.sh: ./d2j_invoke.sh: Permission denied
执行:sudo chmod +x d2j_invoke.sh
把xxx.apk
拿到jar文件 用jd-gui打开
3.修改smali文件
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