共计 1003 个字符,预计需要花费 3 分钟才能阅读完成。
我们一般发布项目出去都去做混淆的操作,一方面优化一下代码,减少一下 Apk 体积;另一方面,让自己的源码逻辑不会那么容易被识别出来。
刚巧在 wanandroid 群里,看到有同学讨论空白混淆的操作,于是搜集了一波比较好玩的混淆词典。
原理很简单,我们混淆是可以配置词典的,所以就当是图个乐了。
我特意找了个开源项目,加一下混淆配置,顺便确定下还能运行 …
https://github.com/kingwang66…
网络不好的不如新建个项目体验,对网络自信的,记得删除这个项目里面的一些代理配置,在 gradle.properties 中。
1 效果
先看一个还算正常的:
用了 Java 里面的关键词作为词典,这反编译之后,要是看到 for,while 就条件反射,可能会懵逼吧。
还有用中文来做词典的:
不过这里面的字我好想一个不认识,真是尴尬 …
还有通过各种字符很容易造成视觉混乱的字符的:
比如这个:
还有这个:
最后这个就比较“sangxinbingkuang”了:
反编译使用的是 jadxhttp://www.wanandroid.com/blo…
2 操作
开启混淆配置
buildTypes {debug { minifyEnabled true proguardFiles getDefaultProguardFile(‘proguard-android.txt’), ‘proguard-rules.pro’ }}
为了方便,你可以直接开启 debug 的混淆,然后就可以直接点击 run 打包和安装了。
可以看到上面配置了混淆文件包含:proguard-rules.pro
和 moudule 的 build.gradle 在同一目录,在里面可以添加你的词典配置:
强烈建议,开启混淆后,配置词典前,先打个包运行一下确定可以正常运行。
最后上面的混淆词典,分别来自不同的开源项目:
https://github.com/RockyQu/Pr…
包含使用 Java 关键词的词典。
https://github.com/o2e/Progua…
包含最后那个全是非常神奇的字符的。
https://github.com/WrBug/Fren…
包含 1il, 中文,0oO 的。
放一个混淆后的 apk 地址,如果实在懒得 run 又想看看效果:
http://wanandroid.com/blogimg…
原文出自微信公众号:鸿祥