咱们通常发布项目出去都去作混淆的操做,一方面优化一下代码,减小一下Apk体积;另外一方面,让本身的源码逻辑不会那么容易被识别出来。android
刚巧在wanandroid群里,看到有同窗讨论空白混淆的操做,因而搜集了一波比较好玩的混淆词典。git
原理很简单,咱们混淆是能够配置词典的,因此就当是图个乐了。github
我特地找了个开源项目,加一下混淆配置,顺便肯定下还能运行...微信
https://github.com/kingwang66...网络
网络很差的不如新建个项目体验,对网络自信的,记得删除这个项目里面的一些代理配置,在gradle.properties中。
1效果gradle
先看一个还算正常的:优化
用了Java里面的关键词做为词典,这反编译以后,要是看到for,while就条件反射,可能会懵逼吧。ui
还有用中文来作词典的:spa
不过这里面的字我好想一个不认识,真是尴尬...debug
还有经过各类字符很容易形成视觉混乱的字符的:
好比这个:
还有这个:
最后这个就比较“sangxinbingkuang”了:
反编译使用的是jadx
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...
原文出自微信公众号:鸿祥