Android开发Android技术知识Android开发经验谈

【安全与逆向】- resources.arsc分析,资源替换

2020-01-19  本文已影响0人  拔萝卜占坑

简介

这篇文章主要讲解Android逆向资源替换,布局修改,resources.arsc文件分析。

资源替换

通过直接解压出来的目录如下:


屏幕快照 2020-01-18 下午2.21.38.png

resources.arsc分析

接下来对resources.arsc文件结构进行分析,掌握了resources.arsc文件结构,我们能够利用其规则开发出我们想要的工具。比如微信的资源混淆工具。其实就是通过读取resources.arsc文件记录资源相关信息的地方,然后统一替换资源目录名,到达资源混淆的目的。
resources.arsc由各种类型Chunk块组成,Chunk块的头部信息记录块的类型、长度等信息。
resources.arsc整体就是一个Chunk块,块的头部信息记录块的类型、长度等信息。而这个顶级块又由其它类型的Chunk组成,同样在块的头部记录了块的类型、长度等信息。

resources.arsc文件采用小端编码方式.数据应该按字节从低位往高位读,关于存储方式“大端”和“小端”可自行百度。

图的第一行分别是:头部类型(两个字节),头部大小(两个字节),Chunk块大小(四个字节),package个数(package数指的是resources.arsc里面包含了多少个package的资源,一般只有一个)。其它可以自行百度,我这里不在累述。后面只用第一行来做讲述。

前两字节:02 00,如果按照小端读取方式,那么前两个字节存储的值是:0002,正是ResourceTypes.h类型定义中的RES_TABLE_TYPE。

第三,四字节值是:000C,十进制为12,从上图可以看出,RES_TABLE_TYPE类型的头大小为12字节。

接下来的4个字节值:0011131C,换算成十进制是:1119004字节,查看 resources.arsc文件属性。


截屏2020-01-19下午8.36.24.png

接下来的两个字节值是:0001,十进制是1。

resources.arsc解析工具

按照上面的resources.arsc上面的文件结构图,可以自己去解析。但是google已经有现成的开源库。
android-arscblamer

这个库支持命令行直接输出resources.arsc存储的信息。解析流程可以查看该库源码。借助该库可以快速读取自己想要的资源信息,开发自己想要的工具。比如资源混淆插件。

上一篇下一篇

猜你喜欢

热点阅读