大家一听到反编译、逆向工程就觉得好像离自己很远,都是些黑客才干的事儿,但实际情况并不是这样,做过手机游戏开发的小伙伴应该都知道,一个游戏包从开发测试到最终在游戏商店上架,中间会经过,代码混淆,增加渠道资源,包体加固等等,这些工作都需要使用反编译和再次打包的技术。
安卓反编译用到的主要工具就是ApkTool了,最常用的命令如:
反编译apk包
apktool d app.apk
打包成apk文件
apktool b app
但在实际使用过程中,有时可能反编译会失败,大多数原因是使用的apktool版本与生成apk的安卓版本不匹配,特别是使用最新的安卓SDK版本,这时候我们可以下载最新的apktool,如果还是解决不了问题,那就只能等apktool官方升级了。但是! 如果我们使用Java调用apktool,如果apktool还没有兼容最新版本的安卓SDK,那我们就可以自己来升级啦。
Java调用apktool反编译方法:
import brut.androlib.Androlib;
import brut.androlib.ApkDecoder;
public void decompile() {
ApkDecoder decoder = new ApkDecoder();
decoder.setApkFile(apkFile);
decoder.setForceDelete(true);
decoder.setDecodeSources((