Android资源混淆

2021-05-26  本文已影响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

一些细节

上一篇 下一篇

猜你喜欢

热点阅读