admin 管理员组

文章数量: 887021

Android资源文件混淆

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

准备工作:
工具下载地址:http://download.csdn/detail/fancy_xty/9497154
将下载下来的工具解压,在文件夹中博主已经写好了相应的文字步骤.
注意apk是要已经签名过的apk.
1 下载好工具之后,将一个需要混淆的apk文件和对应的签名文件复制到resgurad-tools目录下

2 用记事本打开config.xml文件
将全部替换为你的包名 com.xxx(快捷键Ctrl+H)

3 跳到config.xml文件末尾

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

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

生成了两个混淆好的apk文件.
resource_mapping_app-release.txt文件主要就是记录哪些文件被混淆了,还有混淆后的文件路径之类的

到这里混淆资源文件的步骤已经全部完成,现在我们来看看混淆以后的效果,把混淆后的apk文件放到手机安装,提示安装成功,运行看看有没有什么变化, 与混淆前一模一样
最后我们用apktools反编译一下我们混淆后的apk文件
打开根目录,与混淆前的几乎没什么不一样,再打开res文件

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

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

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

文中提到的工具均可以下载,网址:http://download.csdn/detail/fancy_xty/9497154

最后,感谢
https://github/shwenzhang/AndResGuard/blob/master/README.zh-cn.md
github项目提供者.
如果还需要更深层次的混淆需求或者压缩需求可以参考以下博客
http://mp.weixin.qq/s?__biz=MzAwNDY1ODY2OQ==&mid=208135658&idx=1&sn=ac9bd6b4927e9e82f9fa14e396183a8f#rd

最后,对文章中提到的内容有任何疑问,欢迎加群讨论:283272067

本文标签: 文件 资源 Android