您的位置:首页 > 资讯频道 > 国内资讯 > 社会资讯>正文

通付盾移动加固实战系列:Android资源文件加密

时间:2020-07-29 11:51:05    来源:厂商内容    浏览次数:    我来说两句() 字号:TT

  背景

  Android App的资源文件中存放了大量的应用UI界面图片、UI布局文件、隐私数据文件等,如何保障这些资源文件的安全性一直是,和应用安全人员,关注的问题。

  在Android App中,资源主要分为assets资源和res资源两类。

  1.assets文件夹是存放不进行编译加工的原生文件,即该文件夹里面的文件不会像xml,java文件被预编译,可以存放一些图片、html、js、css、证书等文件。

  2.res资源则存放在App的res目录下,该类资源在App打包时大多会被编译,变成二进制文件,应用层代码通过resource id对该类资源进行访问。

  常见方案及问题

  目前市场上常见的资源文件保护方案主要有以下两种思路:

  资源文件混淆保护,对资源文件的路径进行混淆,缩短文件夹和文件名,以及替换/删除某个资源的名称。

  此方式会增加破解者在破解时阅读难度,但是安全强度有限,仅对资源文件进行重命名并不能有效的保护资源文件,破解者依然能可查看并修改资源文件内容,只是破解的时间成本增加了。

  资源文件加密保护,通过加密手段,将Android资源的assets和res等目录的内容进行加密、隐藏及压缩,使用时再将文件解压并对文件解密。

  此方式安全强度相对较高,破解者不能轻易查看和修改资源文件。但是一般只是实现了对assets资源文件的部分加密,且运行时Android依旧需要读取本地解密后的资源文件,依然存在很大的安全隐患和安全漏洞。

  通付盾创新方案-简介

  通付盾移动加固团队在面向Android资源文件加密问题时,实践出一套更加,的Android资源文件加密方案,不但能完成对assets和res文件进行更高标准的全部加密保护,同时能在Android加载资源文件的过程中实现资源文件的不落地解密,以此来避免资源文件被再次还原到本地目录带来的风险,从而对资源文件的保护得到质的提升。


  图1Android资源文件加密方式

  如图1所示,在资源文件加密的过程中,程序首先对App安装包进行分析,获取其中res和assets目录的地址,并对这两个资源文件夹下的内容进行抽取。

  抽取完成之后,压缩成一个新的zip文件。再对这个zip文件进行整体加密,存放在App安装包的assets目录下,并且会删除安装包中原有的assets和res资源文件夹。

  这样攻击者在拿到App安装包的时候就无法从res和assets目录下获取到原始资源文件,也无法进行重打包等恶意行为。对于被加密处理过的压缩资源文件,在调用加载的时候也做了安全保护处理,核心流程如图2所示。


  图2Android资源文件加载方式

  一般市面上对于加密后的资源包,在调用加载的时候都会进行解密,然后形成一份本地解密后的资源包文件,再由系统直接调用本地的资源目录进行读取或加载。这种方式还是会产生本地的资源目录和文件,代表着攻击者从本地目录中还是能够获取到所有的资源文件,无疑产生了极大的安全风险隐患。

  对于此问题,我们创新性的采用不落地加载资源文件的方式来解决。即在Android加载资源文件的过程中,将加密后的资源包进行不落地解密等操作,并让系统能够读取到资源文件,以此来避免产生本地的文件目录,更有效的保护资源文件的安全。

  在Android加载资源文件的过程中,系统最终是依靠一些关键的读写方法进行工作,我们对这些关键方法进行拦截操作,拦截到系统调用读写等动作之后,我们会开始执行对应目标资源文件的解密操作,并直接将解密后的资源文件加载到内存当中。加载到内存后,让系统去内存中直接读取到资源文件,App内就能正常使用到资源文件的内容。

  通付盾创新方案-加密效果

  加密前后资源文件目录对比如图3所示:


  图3Android资源文件加固效果

  加密后的资源文件内容如图4所示:


  图4Android资源文件加密数据

  若想体验资源加密功能,可以到通付盾云平台进行加固体验。


  图5通付盾云平台展示


免责声明:本网站所刊登、转载的各种稿件、图片均有可靠的来源,市场有风险,选择需谨慎!此文仅供参考,不作买卖依据,并不代表新讯网观点,由此产生的财务损失,本站不承担任何经济和法律责任,本站自动屏蔽违反《广告法》词语。

请选择您浏览此资讯时的心情

相关资讯
网友评论
本文共有人参与评论
用户名:
密码:
验证码:  
匿名发表