写在前面
该方式不通用,测试发现修改安卓原生方法修改容易出问题,没有具体深研,应该需要引用库;apk 加壳、混淆后未测试。
1、工具:
(1)apk逆向工具,ApkToolBox 下载地址:https://download.csdn.net/download/u013964761/15118183 ;也可使用apktool.jar
(2)解压/压缩工具,我这里使用的是7-zip;
(3)字节码修改工具,Javassist.jar 下载地址:https://github.com/jboss-javassist/javassist;
2、流程:
(1)通过apk逆向工具 ,阅读源码,找到自己需要修改的地方。
(2)将apk反编译得到对应的目录及文件。
(3)使用解压工具将apk解压得到 classes.dex文件。
(4)通过apk逆向工具将classes.dex 转换成jar得到classes.jar文件。
(5)通过字节码修改工具修改需要java类得到对应的java字节码文件。
(6)通过压缩包工具打开classes.jar找到被修改的类对应的目录,把修改的文件拖进去覆盖原文件。
(7)通过apk逆向工具将classes.jar转换成classes.dex
(8)通过apk逆向工具将7中的classes.dex反编译得到smali文件。
(9)从8步中找到之前修改的类对应的smali文件
(10)将9步中找到的smali文件替换掉第2步中同目录smali文件
(11)通过apk逆向工具打包apk 然后大功告成。
3、字节码修改工具使用