转载请注明地址:https://blog.youkuaiyun.com/lynnchurch/article/details/95100451
为了防止安卓App被Apktool反编译和回编译,有一种比较有效的手段就是针对Apktool的漏洞进行防护,使Apktool在反编译或回编译的过程中发生异常而导致失败。所以要想绕过此类防护手段,就得修复Apktool的相关漏洞,好在Apktool是开源的,于是我们就可以通过研究Apktool的源代码来进行修复。下面是关于目前所遇到的一些问题的说明与修复。
目录
注意:本文的目的在于逆向分析技术的学习与研究,切勿用于非法目的
原Apktool项目地址:https://github.com/iBotPeaches/Apktool
问题一:Could not decode file
反编译的过程中出现如下错误:
S: Could not decode file, replacing by FALSE value: layout/xxx_item.xml
这是由于向resources.arsc
文件中定义了一些并不存在且实际app又不需要的资源,所以按照此无实际资源的文件路径进行解码的时候会出现异常。
解决方案就是在ARSCDecoder.readEntry()
方法中创建ResResSpec
和ResResource
实例之前去判断资源路径所指的资源是否存在,存在则创建相应实例,否则就过滤该资源,代码如下所示:
if (value instanceof ResFileValue) {
String valueStr = value.toString();
Directory apkDir;
try {
apkDir = ApkDecoder.getApkFile().getDirectory();
} catch (