咱們通常發佈項目出去都去作混淆的操做,一方面優化一下代碼,減小一下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...
原文出自微信公衆號:鴻祥