资源混淆(自动化测试)

背景介绍:

每一个app的迭代都会随着功能的增加完善,所需要的资源文件也越来越多,这就导致发到市场上的包也越来越大。

对于用户而言,用户更希望装小的安装包。而资源混淆就是针对资源做的一个优化,从而减小包的大小。

原理概要:

通过对资源文件的重命名以及采用7zip压缩重现打包的方法,从而减少安装包的大小。

备注:本分享主要是解析第三方工具的实现和使用。

https://github.com/shwenzhang/AndResGuard/blob/master/README.zh-cn.md

资源混淆工具的逻辑流:

1.通过命令的形式获取运行时的环境

2.设置运行时路径

3.读取命令行给出的配置参数,一般混淆命令如:

4.进行资源混淆,重新压缩打包

资源混淆工具的核心代码:

用法一:

使用已存在的jar,然后用命令(推荐,简单,成本低)

java -jar andresguard.jar input.apk

若想指定配置文件或输出目录:

java -jar andresguard.jar input.apk -config yourconfig.xml -out output_directory

若想指定签名信息或mapping信息:

java -jar andresguard.jar input.apk -config yourconfig.xml -out

output_directory -signature signature_file_path storepass_value

keypass_value storealias_value -mapping mapping_file_path

若想指定7zip或zipalign的路径(若已设置环境变量,这两项不需要单独设置):

java -jar andresguard.jar input.apk -7zip /shwenzhang/tool/7za -zipalign /shwenzhang/sdk/tools/zipalign

若想用7zip重打包安装包,同时也可指定output路径,指定7zip或zipalign的路径(此模式其他参数都不支持):

java -jar andresguard.jar -repackage input.apk -out output_directory

-7zip /shwenzhang/tool/7za -zipalign /shwenzhang/sdk/tools/zipalign

备注:本地要有混淆工具的jar包。

用法二:

作为第三方工具用在项目中(不推荐使用,配置不小心会出问题,还增加工作量)

运行andresguard/resguard的gradle任务,可以得到资源混淆的安装包 命令行可直接运行./gradlew resguard

备注:这只是在gradle当中一个关键配置。

实例:

结果:

收益:

风险:

潜在风险:

处理不当会crash!!!

备注:尤其是针对大型app,资源文件特别多,三方插件也多,且代码不规范,资源引用写死在代码中的。

原因:

根据前面资源混淆的原理我们知道,减少大小的主要方案就是重命名资源文件,因此就会存在资源文件找不到的问题,一旦找不到,一般来说都会崩溃!

自动化工具背景:

通过资源混淆的原理可以知道,资源混淆最大的风险就是如果白名单不完全,那么任何一个资源的丢失都会让程序直接crash,这种风险是很高的。并且针对于

我们的测试,即便是全功能测试也不能一一覆盖所有的资源。对于这种存在又不可控的风险使资源混淆方案实行起来有点不可行。然后资源混淆的利益则是可观的,

为此便想出了一个方案就是人覆盖不了的case那就让工具去实现。所以就诞生了资源混淆的自动化测试工具。

备注:自己研发的。

开发原理:

1.过滤代码工程里面所有有效的白名单(有效:指的是去重和一些冗余的资源以及config文件通过全匹配已经存在的,因为一些id, color,string, dimen等不是单纯的文件而是某个文件中存在的字段)

2.首先匹配混淆后的apk文件里的所有资源文件,如果存在则pass,如果不存在则fail并且会添加到failed的列表中

3.如1所说有些并非是单纯的文件,所以再去匹配config文件里面的白名单,如果存在就pass,并从failed的列表中移除。(通过实验证实是可行的)。

4.最后输出匹配结果,failed的列表为空则pass,否则failed。并且会输出failed的列表。

技术实现:

1.采用Java开发,eclipse平台。

2.过滤所有的java文件

3.过滤所有的jar文件

4.进行匹配测试

技术难点:

1.如何读取jar文件和apk文件

2.如何判断过滤出来的白名单就是全部的。

3.如何过滤jar文件的白名单,因为jar文件读取后都是class文件,class文件读出来都是乱码。

技术难点攻破:

首先解压:

通过cmd命令调起的方式来实现这个难点。

问题1. 用jad命令进行转换必须是实实在在解压后的class文件。

问题2.  用jad实现必须环境之前得由jad的可运行文件,必须是在jad所在的根目录下才能执行此命令。

解决以上问题,先下载jad的可执行文件,网上有很小,下起来也比较方便。然后代码中写入jad所在的目录,方便cmd的切换。

在RunJADCommand.java类里:

再者,在调起此命令之前我们先得解压jar包,一遍解压一遍转换,然后再读取。读取完后便自动删除解压和转换后的文件。

转换class文件为Java文件:

查找实现:

工具使用:

修改完你自己的指定文件输入输出,直接运行主工程即可:目前是Java工程,这个测试不会流到测试手中,开发人员自己完成测试,分分钟的事。

Java console会详细输出

备注:本地也会以文件形式有输出

附件:如有需要请联系本人要自动化测试的代码。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,636评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,890评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,680评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,766评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,665评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,045评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,515评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,182评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,334评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,274评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,319评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,002评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,599评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,675评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,917评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,309评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,885评论 2 341

推荐阅读更多精彩内容