反编译app之后什么都没动就没法重打包的情况是很常见的,
其多发于反编译加壳之后的app(资源文件被混淆了)
或者res目录下面有特殊的资源文件夹,一般是由编译器的插件生成的,编译器可以编译但是apktool不认识导致无法回编译(常见的有res下面navigation这个目录)
或者奇奇怪怪的原因导致无法重打包
加壳之后的app无法重打包
出现apktool无法识别的资源文件夹
采用部分替换的方式绕过这些问题
什么叫部分替换?
就是把apk文件当成压缩包来处理,将里面的文件拿出来修改之后再放回去重新签名,这样就绕过了重打包这个环节
具体方法
这里介绍几种情况:
因为无法识别的资源文件夹导致无法重打包:可以使用apktool采用忽略res资源文件的方式进行反编译,这样得到的项目文件是可以重打包回去的。
但是因为忽略了res文件会导致manifest.xml是没有反编译的,所以无法修改清单文件
所以只需要修改dex时可以将dex单独拿出来进行修改,修改完之后使用DexFixer等工具修复一下替换原apk里面的dex,再签名就可以了
而对于加壳的app,由于我们需要修改manifest文件里面的入口点进行脱壳修复。所以采用忽略res的方法是行不通了
这时可以使用np管理器(这个免费)或者mt管理器对apk直接编辑
因为这些软件可以直接以压缩包的形式对apk进行修改(包括dex和manifest),所以网上很多脱壳修复教程都是在手机端上面完成的
最后推荐一下在pc端上面比较好用的反编译和重打包工具:vscode平台上面的apklab(对于新手或者嫌cmd麻烦的人可以省很多事)