社会民生 滚动新闻 科技资讯 商业关注 金融观察 品牌资讯 动漫游戏 图片新闻 生活消费 社会民生 科技创新
您现在的位置:首页 > 社会民生
Android apk资源保护方案研究分析
2016/11/10 17:02:54
      来源:
齐鲁晚报

  齐鲁晚报11月10日讯:Android APP以APK文件形式存在,APP中主要包含应用程序代码和资源文件两部分,如何有效保护Android应用中的代码、资源的安全一直是开发者最关心的话题。针对应用程序代码,目前主要有两类方案,即代码混淆和应用加密。比较常见的代码混淆有proguard、dexguard等,而应用加密近些年国内也涌现出很多安全厂商提供该服务。本文则主要针对Android apk资源文件保护方案进行分析。

  Android apk中的资源主要分为assets资源和res资源两类。Assets资源存放在APP的assets目录下,该类文件是一些原始文件,APP打包时并不会对其进行编译,而是直接打包到APP中,对于这一类资源文件的访问,应用层代码需要通过文件名对其进行访问。Res资源则存放在APP的res目录下,该类资源在APP打包时大多会被编译,变成二进制文件,并会为每个该类文件赋予一个resource id。对于该类资源的访问,应用层代码则是通过resource id进行访问的。

  Android apk资源文件中存放了大量的应用UI界面图片、UI布局文件、隐私数据文件等,保障这些文件的安全性一直困扰着开发者,接下来将具体分析一下目前市场上常见的资源文件保护方案。

  一、 Android资源文件保护相关方案

  目前对Android应用资源文件的保护主要有两类方案,一类是对资源文件混淆保护,另一种则是对资源文件加密保护。

  1. 资源文件混淆保护

  Android apk开发过程中公司大都提倡命名规范化,因此通过文件名称非常容易理解其含义,这样有利于开发者理解和维护应用,但是同时也给应用破解者提供了方便,破解者通过这些命名很容易便可找到他们需要的文件位置,并理解这些文件的意图。对资源文件进行重命名则可以在一定程度上提升破解者理解这些文件的难度,从而一定程度上提升资源文件的安全性。例如将原资源文件res/layout/activity_main.xml命名为res/a/a.xml,通过layout和activity_main.xml我们很容易知道该文件可能是个布局相关文件,且可能是主activity的布局文件,而被混淆变成res/a/a.xml后,破解者则很难通过名字知道a.xml文件的作用。

  我们知道,Android应用在编译过程中aapt工具会对资源文件进行编译、打包,并生成一个resource.arsc文件,resource.arsc文件相当于一个文件索引表,记录了很多跟资源相关的信息。因此,如果需要对资源文件进行混淆,如何保证resource.arsc文件的正确性是个难点。至少我们可以两个方面攻克这一问题。

  1) 修改aapt方案

  在APP的编译打包过程中,工具aapt负责对资源文件进行编译、打包并生成resource.arsc文件,因此我们可以通过分析并修改aapt源码来实现生成正确的resource.arsc文件。

  2) 修改resource.arsc文件

  修改aapt源码的方案对开发者要求较高,且不同版本aapt可能有区别,直接修改打包好的APP中的resource.arsc文件可能也是一个不错的方案。

  文件resource.arsc的格式可以通过分析aapt的源码获知,且目前也有很多文档介绍该文件的格式,因此,我们可以通过对APP解包、读取、解析、修改其中的资源文件和resource.arsc文件来实现对APP资源文件的混淆。

  下面我们通过一个demo APP文件展示一下资源文件混淆保护的效果。

  其中图1为资源文件保护前的资源文件结构图,图2为资源文件保护后的资源文件结构图。

  

UEditor_snapScreen_tmp.jpg

 

  图1 资源文件保护前res目录结构

  

UEditor_snapScreen_tmp.jpg

 

  图2 资源文件保护后res目录结构

  从图1和图2可以看出,资源文件混淆后,原来的res目录变成了r目录,该目录下的目录名字都变成了没有字面意义的字母,从而一定程度上保证了res资源的安全性。

  以上提出的资源文件混淆保护方案有一定技术难度,所以在开发者实际使用过程中并没有广泛运用。目前,开发者出于技术能力和精力的种种限制,越来越多的开发者选择使用第三方应用加密保护平台来实现对资源文件的保护。

  2. 资源文件加密保护

  资源文件加密保护,从字面来看,无非是对APP中的资源文件进行加密,在APP运行时对资源文件进行解密恢复,从而使应用正常访问资源文件。由于资源文件被加密,因此通过对APP进行反编译并不能看到真正的资源文件,从而保证资源文件的安全性。虽然资源文件加密保护大体思路如此,但是实现方案和效果则可能不同。下面以360加固保提供的资源文件加密保护方案为例分析其方案效果。

  写一个demo APP文件,使用360加固保的资源文件加密保护功能,图3和图4为资源保护前的APP的assets目录和res目录文件结构,图5和图6为资源保护后的APP的assets目录和res目录文件结构。

  

UEditor_snapScreen_tmp.jpg

 

  图3 资源保护前assets目录文件结构

  

UEditor_snapScreen_tmp.jpg

 

  图4 资源保护前res目录文件结构

  如图3和图4所示,原APP的assets目录下有三个文件,分别是a.log、b.log、c.log。res目录下有很多文件,如ui文件、配置文件等。目录assets下面存放的是未进行压缩的原始文件,可以很容易的被破解者修改并重打包,目录res下的文件虽然大部分是经过了压缩处理的,但是其中的图片却能直接看到,且即使是被压缩过的二进制文件也很容易被破解者修改。

  接下来使用360加固保的对该APP进行资源文件保护,解压保护后的APP,得到图5和图6。图5为360加固保资源文件保护后的assets目录结构,图6为资源文件保护后的res目录结构。

  

UEditor_snapScreen_tmp.jpg

 

  图5 资源保护后asset目录文件结构

  

UEditor_snapScreen_tmp.jpg

 

  图6 资源保护后res目录文件结构

  图5中可以看出,之前该目录下的a.log、b.log、c.log文件消失了,但多出了libjiagu.so、libjiagu_x84.a、libjiagu_x86_1.a、libjiagu_x86.so和resConf文件。多出的这些文件则是360加固保的APP加固和资源加密相关的文件。

  图6中可以看出,之前res目录下的很多文件都不见了,查看了一下留下的几个目录的文件,里面的文件是APP的图标。

  可以看到使用360加固保后,能对资源文件进行有效的加密保护效果。360加固保资源文件加密保护的大体原理如下:

  1) 抽取原APP中需要加密保护的资源文件

  解压抽取APP中的需要加密的资源文件,并过滤到一些不能保护的资源文件,如APP图标等;

  2)加密资源文件

  对抽取出来的需要加密保护的资源文件进行加密处理,并隐藏起来;

  3) 实现外壳程序

  要想让APP正常运行,则需要为使用资源保护后的APP实现一个外壳程序,360加固保本身具有APP加固功能,因此他们可以将资源文件保护的恢复程序集成到360加固保的加固壳程序里面,如果不使用360加固保,那么我们就需要自己实现一个外壳,外壳程序需要负责在APP使用资源前对资源文件进行恢复。例如如果保护我们自己的APP资源,那么我们就需要实现一个资源恢复程序外壳,并将该外壳的程序入口代码放到APP中,壳程序入口的运行时机应足够早,比如放到我们可以将这个外壳放在应用代码的Application类里面。

  本文介绍了两种可行的资源文件混淆保护方案,一种是修改aapt工具,让aapt在编译资源时生成混淆后的正确的resource.arsc文件,同时修改资源文件名称,另一种方案则是直接修改APP中的资源文件名,同时修改其中的resource.arsc文件。

  从实现难易度和工作量综合来看,第二种方案,即直接修改APP中相关文件可能更为适合,但从保护效果来看,两种方案实现的混淆效果是一样的,都是对文件进行重命名。

  资源混淆保护方案优缺点:

  优点:可减小APP体积。

  缺点:安全强度有限:仅对资源文件进行重命名并不能有效的保护资源文件,破解者依然能可查看并修改资源文件内容,

  assets文件保护难度较大:如需对assets目录下的资源进行混淆,则需要修改java程序代码或者dex文件,难度和复杂度较大,容易出错。

  资源文件加密保护方案优缺点:

  本文对360加固保的资源文件保护方案的效果和实现进行了分析,从效果来看该保护方案安全强度较高,资源文件加密处理后在APP中不可见,且壳程序采用native代码实现,逆向难度较大。

  优点:安全强度高,破解者不能查看和修改资源文件。

  缺点:由于需要运行时解密,有可能会对APP的性能有所影响,不过经过测试平台的测试,加固后对APP的兼容性在99%以上,这也是越来越多的开发者选择这种第三方应用加固平台的原因。

滚动新闻 更多
血性的“疯狂电影城”迎来纯净的“电...
小微企业3年倒一批? 选对工具帮你...
畅谈人工智能:人造“大脑”能考上大...
“西王忠实消费者生产基地一日游”火...
中国解放军方阵亮相俄罗斯红场阅兵最...
三省市明确协同发展定位,孔雀城大学...
59.1%网民流量供不应求 流量赚...
2014年中国手机网民流量使用情况...
习近平:各级官员要疾恶如仇对不正之...
2016十大智能锁评选,摩力、三星...
生活消费 更多
中国电信21CN综合平台副总经理任...
流量宝斩获卓越成就奖·卓越之星 ...
流量宝产品事业部产品经理魏剑:流量...
艾媒咨询集团CEO张毅:网民流量需...
中国电信综合平台副总经理任伟权:玩...
战火刚起?国产电饭煲PK日本电饭煲...
呷哺呷哺荣登中国餐饮企业前20强
中国批发市场品牌推广 促电商市场发展
无手指玩转LOL 虎牙直播“拉风哥...
葫芦情侣手机京东众筹在即 主打终身...
品牌资讯 更多
Bong智能手环奇酷试用 体验手环...
小龙虾好吃太贵 在家做麻辣小龙虾味...
互联网生鲜“淘菜猫”助力食品安全周
“峻岭极先锋”京城收官 RAV4百...
广州健科联袂瑞典Lycekby惊艳...
合理利用再生资源,家园变成大花园
倡导“光盘”,拒绝“剩宴”!
节约能源,点滴做起!
能源有限 ,节约无限!
“全国低碳日”,人人参与绿色出行
动漫游戏 更多
钱多多:P2P网贷监管落地,企业续...
网汇贷:我只想发财,可我有“拖延症...
网汇贷:谈钱伤感情?看看张靓颖就知...
钱多多:青年人是P2P网贷未来发展...
同盾贷后监控 领衔金融科技创新
钱多多:P2P网贷平台资产端差异影...
“短信”经济风靡,红枫叶传媒成市场...
交行山西省分行不断完善 风险管理考...
王力宏综艺首秀 微鲸VR《盖世音雄...
蝴蝶银: 5月理财正当时 蝶叔来支招
关于中原财经  |  网站动态  |  联系我们  |  法律声明  |  66人才网
邮箱 llnews@qq.com QQ:85246286
中原财经网版权所有