Android资源混淆工具使用说明Android开发开发语言与工具

本文主要是讲述资源混淆组件的用法以及性能,资源混淆组件不涉及编译过程,只需输入一个apk(无论签名与否,debug版,release版均可,在处理过程中会直接将原签名删除),可得到一个实现资源混淆后的apk(若在配置文件中输入签名信息,可自动重签名并对齐,得到可直接发布的apk)以及对应资源ID的mapping文件。同时可在配置文件中指定白名单,压缩文件(支持*,?通配符),支持自动签名,保持旧mapping,7z重打包,对齐等功能。本工具支持Linux、Window跨平台使用,但测试表示若使用7z压缩,Linux下的压缩率更高。

1.怎么使用混淆工具

我们先看看它的help描述,最简单的使用方式是:java-jarandresguard.jarinput.apk,此时会读取运行路径中的config.xml文件,并将结果输出到运行路径中的input(输入apk的名称)中。当然你也可以自己定义:

-config,指定具体config文件的路径;

-out,指定具体的输出路径;混淆的mapping会在输出文件夹中以resource_mapping_input(输入apk的名称).txt命名。

-signature,指定签名信息,若在命令行设置会覆盖config.xml中的签名信息,顺序为签名文件路径、storepass、keypass、storealias。

-mapping,指定旧的mapping文件,保证同一资源文件在不同版本混淆后的名称保持一致。若在命令行设置会覆盖config.xml中的信息。

-7zip,指定7zip的路径,若已添加到环境变量不需要设置。应是全路径例如linux:/shwenzhang/tool/7za,Window需要加上.exe结尾。

linux:sudoapt-getinstallp7zip-full

mac:sudobrewinstallp7zip

-zipalign,指定zipalign的路径,若已添加到环境变量不需要设置。应是全路径例如linux:/shwenzhang/sdk/tools/zipalign,Window需要加上.exe结尾。

-repackage,如果想要出渠道包等需求,我们可能希望利用7zip直接重打包安装包。

2.简单用法

java-jarandresguard.jarinput.apk若想指定配置文件或输出目录:

java-jarandresguard.jarinput.apk-configyourconfig.xml-outoutput_directory若想指定签名信息或mapping信息:

java-jarandresguard.jarinput.apk-configyourconfig.xml-outoutput_directory-signaturesignature_file_pathstorepass_valuekeypass_valuestorealias_value-mappingmapping_file_path若想指定7zip或zipalign的路径(若已设置环境变量,这两项不需要单独设置):

java-jarandresguard.jarinput.apk-7zip/shwenzhang/tool/7za-zipalign/shwenzhang/sdk/tools/zipalign若想用7zip重打包安装包,同时也可指定output路径,指定7zip或zipalign的路径(此模式其他参数都不支持):

配置文件中主要有五大项,即property,whitelist,keepmapping,compress,sign。

1.Property项

Property主要设置一些通用属性:

--sevenzip,是否使用7z重新压缩签名后的apk包(这步一定要放在签名后,不然签名时会破坏效果),需要我们安装7z命令行,同时加入环境变量中,同时要求输入签名信息(不然不会使用)。

Linux:可直接sudoapt-getinstallp7zip-full。

注意:效果很好,推荐使用,并且在Linux(Mac的高富帅也可)上。

--metaname,由于重打包时需要删除签名信息,考虑到这个文件名可能会被改变,所以使用者可手动输入签名信息对应的文件名。默认为META_INF。

--keeproot,是否将res/drawable混淆成r/s

2.Whitelist项

Whitelist主要是用来设置白名单,由于我们代码中某些资源会通过getIdentifier(需要全局搜索所有用法并添加到白名单)或动态加载等方式,我们并不希望混淆这部分的资源ID:

--isactive,是否打开白名单功能;

--path,是白名单的项,格式为package_name.R.type.specname,由于一个resources.arsc中可能会有多个包,所以这里要求写全包名。同时支持,?通配符,例如:com.tencent.mm.R.drawable.emoji_、com.tencent.mm.R.drawable.emoji_?;

注意:1.不能写成com.tencent.mm.R.drawable.emoji.png,即带文件后缀名;2.通配符代表.+,即a,不能匹配到a;

3.Keepmapping项

Keepmapping主要用来指定旧的mapping文件,为了保持一致性,我们支持输入旧的mapping文件,可保证同一资源文件在不同版本混淆后的名称保持一致。另一方面由于我们需要支持增量下载方式,如果每次改动都导致所有文件名都会更改,这会导致增量文件增大,但测试证明影响并不大(后面有测试数据)。

--isactive,是否打开keepmapping模式;

--path,是旧mapping文件的位置,linux用/,window用\;

4.Compress项

Compress主要用来指定文件重打包时是否压缩指定文件,默认我们重打包时是保持输入apk每个文件的压缩方式(即Stored或者Deflate)。一般来说,1、在2.3版本以下源文件大于1M不能压缩;2、流媒体不能压缩。对于.png、.jpg是可以压缩的,只是AssetManger读取时候的方式不同。

--isactive,是否打开compress模式;

--path,是需要被压缩文件的相对路径(相对于apk最顶层的位置),这里明确一定要使用‘/’作为分隔符,同时支持通配符,?,例如.png(压缩所有.png文件),res/drawable/emjio_.png,resouces.arsc(压缩resources.arsc)

注意若想得到最大混淆:

5.Sign项

--isactive,是否打开签名功能;

--path,是签名文件的位置,linux用/,window用\;

--storepass,是storepass的数值;

--keypass,是keypass的数值;

--alias,是alias的数值;

注意:若出于保密不想写在config.xml,可用-signature命令行设置模式。config.xml中的签名信息会被命令行覆盖。

1.基本的耗时与效果

2.compres参数(下文有详细描述,是否压缩某些资源)对安装包大小的影响

若指定compess参数.png、.gif以及*.jpg,resources.arsc对安装包大小影响如下:

但是resources.arsc如果原文件大于1M,压缩后是不能在系统2.3以下运行的。

3.操作系统对7z的影响

所以最后出包请使用Linux(Mac亦可),具体原因应该与文件系统有关。

4.keepmapping方式(下文有详细描述,是否保持旧的mapping)对增量包大小的影响

事实上,它们的差分是不需要371kb,因为有比较大的文件格式,共同标记部分。

分别用安装包b、c对安装包a生成增量文件d,e。比较增量文件d、e的大小,分别如下:

所以增量文件的大小并不是我们采用keepmapping方式的主要考虑因素,保持混淆的一致性,便于查找问题或是更加重要的考虑。

THE END
1.产品使用说明书范文5篇(12页)产品使用说明书范文5篇 说明书,是以应用文体的方式对某事或物来进行相对的具体描述,便利人们熟识和了解某事或物。那么怎么写产品的使用说明书呢?下面是给大家带来的产品使用说明书范文,欢迎大家阅读参考! 产品使用说明书范文1 您可使用此模板创建具有专业水平的三折页。步骤为: 1. 插入您的内容 用您的内容替换指导https://m.book118.com/html/2021/1108/8045123125004033.shtm
2.如何写使用说明书或使用手册使用指南怎么写如何写使用说明书或使用手册 作为一个测试人员,有时需要输出产品使用说明书或使用手册的文档,以下是分享的一些经验。 一、准备工作 1、了解业务流程和产品的功能(了然于心那种)。 2、熟悉使用操作。 二、写作思路 1、第一种写作思路,是完全按照功能性,按照一定的顺序,编写完成使用手册。 https://blog.csdn.net/teachskyLY/article/details/84197115
3.如何用语雀写一份个人使用说明书?除了这些,你也可以看看语雀用户许同学和臻默分享过的,如何设计个人使用说明书: 当你开始去写个人说明书,你会发现,写个人说明书也是一个自我发现和自我挖掘的过程,通过不断完善你的个人使用说明书,你可以更好的了解自己。 语雀上优秀的花园 语雀的数字花园,正是一个非常适合制作个人说明书的地方。 https://zhuanlan.zhihu.com/p/597924308
4.如何写氯化氢的使用说明氯化氢HCL高纯氯化氢气体氯化氢的使用说明如何制作。大家对于氯化氢的性质可能已经了解了不少,对于生产氯化氢的专业厂家来说,提供的产品必须要给用户提供详细的使用说明,这样才能保障客户能够了解清楚,使用过程中也会比较放心,这里小编就来给你介绍一下如何写使用说明。 承装它的容器都是钢瓶,因为这样可以保证一定的气压,而且易于进行管理和运输https://www.zbwdl.com/kehulist.asp?id=837
5.个人使用说明书:如何让团队更好地“使用”你?当我们购买一台微波炉、电饭煲或者打印机时,一般都会拿到一份产品使用说明书,介绍产品的各项功能、推荐使用环境、安全警告和维护建议等。? 那么,针对“人”这么一个复杂的“产品”,我们是不是也可以做一份个人使用说明书,放在飞书聊天窗口中最显眼的“个性签名”中,让同事们在发消息前就知道如何更好地“使用”你https://www.feishu.cn/hc/zh-CN/articles/360048137813
6.ONScripter因为原先的帖子里没有写使用说明,所以我单独开一帖。到目前为止我在bitbucket上总共放了这些文件看到一堆文件可能会不知道该下哪一个版本,所以我说明一下这些不同的文件名代表什么:sdl2代表程序是用sdl2分支的代码编译而来的后缀名ipa是iOS的软件包,apk是Android的软件包,appx是WP或者WinRT的软件包https://tieba.baidu.com/p/3395900252
7.中国共产党党员组织关系介绍信1使用说明编辑 2006年12月8日中共中央组织部发出的《关于印发<中国共产党流动党员活动证>和<中国共产党党员组织关系介绍信>修订式样的通知》(组通字〔2006〕45号),对《中国共产党党员组织关系介绍信》的填写使用和印制做了明确规定。[1] 《中国共产党党员组织关系介绍信》的填写使用和印制说明 填写 1、党员组织https://baike.sogou.com/v63588511.htm
8.使用说明多媒体数字报使用说明 一、如何打开多媒体数字报? 1、访问多媒体数字报首页,即可阅读最新一期的报,阅读需要安装flash播放插件,可实现翻页的动画效果。 2、为获得良好的阅读效果,可以按键盘上方的"F11"键将窗口最大化,令页面浏览更加方便。 3、网站首页的搜索功能是为了方便读者查找资料而特别设计的功能,例如输入"http://www.nnwb.com/tutorial.jsp