apktool反编译之Can‘t find framework resources报错问题分析

闽承望
2023-12-01

问题背景

在反编译测试中,使用apktool反编译apk报错,如:当我们反编译从华为MATE20 PRO导出的时钟apk时,得到了一条错误信息如下:

$ apktool d com.android.deskclock.apk
I: Loading resource table...
I: Decoding resources...
I: Loading resource table from file: 1.apk
W: Could not decode attr value, using undecoded value instead: ns=android, name=drawable
W: Could not decode attr value, using undecoded value instead: ns=android, name=icon
Can't find framework resources for package of id: 2. You must install proper framework files, see project website for more info.

问题分析

错误提示:该错误原因提示我们不能找到id=2的框架包资源,必须安装正确的框架(framework)文件;

报错原因:我们反编译的apk针对特定的框架(如:华为的framework-res.apk、framework-res-hwext,本文以华为MATE20 PRO为例)做了适配,依赖framework中部分资源文件,在反编译过程中未找到相关的文件所以报错。

解决方案

由上述分析可知,当发生此类错误时,需要我们首先安装依赖的框架资源文件,然后再执行反编译。整个操作流程如下:

        此刻我们返回到问题背景,发现报错信息为Can't find framework resources for package of id: 2.,报错信息中是找不到id=2的framework resources,而当前安装的id=1,说明该framework resources不多,此时执行apktool反编译依然会报错,在framework文件夹中发现还有另外一个framework-res-hwext.apk文件,这里我们继续安装。

1.从手机中获取framework resource,这里采用adb pull /system/framework导出整个framework文件;
2.在导出中framework中查看以”resources”,”res”,”frame-work”命名的apk,这里找到了framework-res.apk和framework-res-hwext.apk两个apk;

3.对framwork-res.apk进行安装,采用的命令为apktool if framework-res.apk;

4.对framework-res-hwext.apk进行,用的命令为apktool if framework-res-hwext.apk.

此时我们现在安装的framework resource与报错信息中的id一致,说明已找到正确的framework resource。

5.再一次执行反编译,反编译成功,反编译文件夹中包含smali文件等内容。

 类似资料: