Android资源文件混淆

通常我们说的混淆都是指代码混淆,但其实资源文件中也有很多重要的文件,为了防止我们的资源文件被别人用apktools反编译直接获取到,我们可以使用某些工具来为我们的资源文件做混淆,保证我们资源文件的相对安全.
在写这篇博客前,博主已经踩了N多的坑,为了方便更多的人,我把资源文件混淆用到的工具和步骤上传到CSDN供大家参考.

准备工作:

工具下载地址:

将下载下来的工具解压,在文件夹中博主已经写好了相应的文字步骤.

注意apk是要已经签名过的apk.

1 下载好工具之后,将一个需要混淆的apk文件和对应的签名文件复制到resgurad-tools目录下

res反资源混淆 软件 res资源混淆什么意思_android


2 用记事本打开config.xml文件

将全部替换为你的包名 com.xxx(快捷键Ctrl+H)

res反资源混淆 软件 res资源混淆什么意思_res反资源混淆 软件_02


3 跳到config.xml文件末尾

res反资源混淆 软件 res资源混淆什么意思_安全_03


4 保存并关闭config.xml文件,然后把将resgurad-tools文件夹复制到D盘下,或者别的盘也可以

5 Win+R cmd 运行以下命令 (如果复制到别的目录,把路径对应修改即可)

cd /d D:\resgurad-tools

6 把以下命令中的input.apk 替换成你自己的 apk名字运行即可

java -jar andresguard.jar input.apk

res反资源混淆 软件 res资源混淆什么意思_安全_04


7 打开生成的对应的文件夹

res反资源混淆 软件 res资源混淆什么意思_安全_05


生成了两个混淆好的apk文件.

resource_mapping_app-release.txt文件主要就是记录哪些文件被混淆了,还有混淆后的文件路径之类的到这里混淆资源文件的步骤已经全部完成,现在我们来看看混淆以后的效果,把混淆后的apk文件放到手机安装,提示安装成功,运行看看有没有什么变化, 与混淆前一模一样

最后我们用apktools反编译一下我们混淆后的apk文件

打开根目录,与混淆前的几乎没什么不一样,再打开res文件

res反资源混淆 软件 res资源混淆什么意思_安全_06


全都变成了valuesXXX文件,还找的到你原来的values吗,因为config.xml中默认配置友盟等第三方资源文件不被混淆,所以这些资源文件还是能够看到.再往下看,res目录下除了以values开头的文件夹以外再也没有任何其他的文件夹,那我们的资源文件都到哪里去了呢,

打开目录下面的unknown文件夹下的r文件夹

我们会看到

res反资源混淆 软件 res资源混淆什么意思_res反资源混淆 软件_07


我们的资源文件全都变成了短字符串,如果不对照mapping文件,我们自己都难以找到原来的资源文件了.

注:如果控制台报错,并且没有生成签名后的安装包,说明操作失败。仔细看看错误, 仔细检查配置是否正确,如果确定配置完全正确,看看错误信息,百度解决。
目前碰到一个 cannot run program “jarsigner”:create process=2,系统找不到指定文件的错误。
原因:可能是jdk没有安装好, 或者是环境有问题。
解决方案:找其他人要一个jarsigner.exe文件替换自己的。 或者换个电脑试下。