美文网首页Android开发Android技术知识Android开发经验谈
【安全与逆向】- resources.arsc分析,资源替换

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

作者: 拔萝卜占坑 | 来源:发表于2020-01-19 20:47 被阅读0次

    简介

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

    资源替换

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


    屏幕快照 2020-01-18 下午2.21.38.png
    • 资源直接替换
      在res,assets目录下找到需要替换的资源文件,替换,但是要保证文件名一致。
    • 布局修改
      如果想要在界面上添加UI,那么可以在res下找到相应的布局文件,然后添加代码,修改布局参数等等。
    • 添加新的资源
      在资源目录下添加新的资源(比如图片,xml资源文件定义新的color,string等)。这些可以在修改布局文件时直接引用。
    • 资源局部替换
      上面的替换方式,只要资源被替换,所有引用的地方都会被替换,如果资源的引用没有写在xml布局里面,那么我们可以分析smali文件,通过resources.arsc文件拿到对应资源的id,然后找到需要修改的smali文件里对应的资源id赋值的地方,用新的id替换。

    resources.arsc分析

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

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

    • resources.arsc文件结构图


      2199790-6b6df646b982bd87.png

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

    • resources.arsc数据类型在Android系统层的定义
      文件路径:./frameworks/base/libs/androidfw/include/androidfw/ResourceTypes.h


      截屏2020-01-19下午5.35.24.png
    • resources.arsc二进制数据查看
      解压apk文件,得到 resources.arsc,用编辑工具查看resources.arsc。我使用的是010 Editor二进制查看工具。


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

    前两字节: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存储的信息。解析流程可以查看该库源码。借助该库可以快速读取自己想要的资源信息,开发自己想要的工具。比如资源混淆插件。

    相关文章

      网友评论

        本文标题:【安全与逆向】- resources.arsc分析,资源替换

        本文链接:https://www.haomeiwen.com/subject/jymkzctx.html