android资源文件混淆

前面一篇文章我们说过Apk的混淆,除了源代码的混淆,还有资源文件的混淆。

微信推出的apk资源混淆方案,该方案的具体原理课参见:安装包立减1M–微信Android资源混淆打包工具

微信资源混淆工具使用说明:https://github.com/shwenzhang/AndResGuard

方案演进

我们可以想到以下几种方案:

  1. 最简单的方法,我们按照Proguard的做法,直接在源码级别修改,将代码以及xml的R.string.name中替换到R.string.a,icon.png重命名为a.png 然后再交给Android编译。

  2. 根据Android的编译流程,所有资源ID已经被编译成32位int值。这说明我们并不需要去修改xml与java,因为在编译过程已经被R.java所替换,我们直接修改resources.arsc的二进制数据,不改变打包流程,只要在生成resources.arsc之后修改它,同时重命名资源文件。

  3. 但是方案二看起来不错,但是它依然依赖了编译流程,不利于使用。其实我们可以做到直接处理安装包. 不依赖源码,不依赖编译过程,仅仅输入一个安装包,得到一个混淆包。

毫无疑问,微信采用的是方案三。现在关键问题是我们如何直接修改resources.arsc文件来达到资源混淆的效果?

猜你喜欢

转载自blog.csdn.net/W2316/article/details/81705446