美文网首页
Android资源混淆

Android资源混淆

作者: 麻油里 | 来源:发表于2021-05-26 16:36 被阅读0次

资源混淆有助于减小包体积,也可以提高被反编译后阅读代码的难度。还可以应对一些安全检测机构对于资源混淆要求。

基于微信的Android资源混淆工具,实现资源混淆。

原理

Android的资源类型是很多的,比如说drawable,string,layout等,aapt在打包时,会将这些资源的名称,id和位置打包进一个resources.arsc包。
通过AndroidStudio可以查看resouces.arsc文件的内容。


image.png

AndResGuard大致上做的就是修改资源的名称和路径,修改为a b c这种简短的名称。

注意事项

如果你的资源,存在使用插件化的方式加载的,即:使用名称去找id,再用id去加载资源,由于资源的名称已经修改过了,所以会无法找到id。这种情况不能混淆。框架中提供了添加白名单的方法。
但是三方sdk中隐藏的插件化方式有点防不胜防。官方提供了常见的sdk白名单

使用方法

我使用的是gradle集成的方式

1.添加gradle配置

2.设置白名单,我设置了除了layout以外所有的资源不进行混淆,因为我的需求是应付安全监测,并且我们的项目中存在图片插件加载,为了降低后期维护成本,就不进行混淆了。

3.执行命令:resguardRelease 与assemble类似

具体可以参考github

一些细节

  • mappingFile要不要加?我选择不加,加了之后,会keep住资源的路径,如果对增量包大小有要求的,可以加。不加的话,包体积可以进一步减小,并在一定程度上提高反编译的难度。
  • mergeDuplicationedRes要不要加?我是加的。是否会造成什么问题?应该是不会的。因为框架本质上修改的是图片的指向的路径,图片的名称和id都没有修改,所以不管是正常引用和插件化加载都是没问题的。

相关文章

  • 美团Android资源混淆保护实践

    第164期:美团Android资源混淆保护实践 Android开发 美团Android资源混淆保护实践 我们往往忽...

  • android 资源混淆

    资源混淆插件目前有andresguard插件,但是局限于只有混淆功能,不适合和其他的插件混用,即使存在命令打包增加...

  • android 资源混淆

    方案选择: 1.微信混淆方案(AndResGuard)2.美团混淆方案 区别: 微信的方案是通过修改aapt在处理...

  • Android资源混淆

    资源混淆有助于减小包体积,也可以提高被反编译后阅读代码的难度。还可以应对一些安全检测机构对于资源混淆要求。 基于微...

  • Android周报第十八期

    1)安装包立减1M--微信Android资源混淆打包工具 微信中的资源混淆工具主要为了混淆资源ID长度(例如将re...

  • 你混淆Android代码多吗?

    ProGuard是一个开源的Java代码混淆器。它可以混淆Android项目里面的java代码,但是不能混淆资源,...

  • 资源混淆

    微信开源的Android资源混淆工具 https://github.com/shwenzhang/AndResGu...

  • ProGuard详解

    Android分享:代码混淆那些事Android代码混淆之混淆规则Android-Dev-Favorites An...

  • Android代码混淆

    待整理。。。 参考: Android混淆从入门到精通 Android代码混淆之混淆规则 代码混淆规则配置文件:pr...

  • APK瘦身

    参考文章: 给APK瘦身 Android安装包相关知识汇总 安装包立减1M--微信Android资源混淆打包工具A...

网友评论

      本文标题:Android资源混淆

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