“喪心病狂”的混淆操作!
我們一般釋出專案出去都去做混淆的操作,一方面優化一下程式碼,減少一下Apk體積;另一方面,讓自己的原始碼邏輯不會那麼容易被識別出來。
剛巧在wanandroid群裡,看到有同學討論空白混淆的操作,於是蒐集了一波比較好玩的混淆詞典。
原理很簡單,我們混淆是可以配置詞典的,所以就當是圖個樂了。
我特意找了個開源專案,加一下混淆配置,順便確定下還能執行...
https://github.com/kingwang666/GetApk
網路不好的不如新建個專案體驗,對網路自信的,記得刪除這個專案裡面的一些代理配置,在gradle.properties中。
1 效果
先看一個還算正常的:

image
用了Java裡面的關鍵詞作為詞典,這反編譯之後,要是看到for,while就條件反射,可能會懵逼吧。
還有用中文來做詞典的:

image
不過這裡面的字我好想一個不認識,真是尷尬...
還有通過各種字元很容易造成視覺混亂的字元的:
比如這個:

image
還有這個:

image
最後這個就比較“sangxinbingkuang”了:

image
反編譯使用的是jadx
http://www.wanandroid.com/blog/show/2034
2 操作
開啟混淆配置
buildTypes {debug {minifyEnabled trueproguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'}}
為了方便,你可以直接開啟debug的混淆,然後就可以直接點選run打包和安裝了。
可以看到上面配置了混淆檔案包含: proguard-rules.pro
和moudule的build.gradle在同一目錄,在裡面可以新增你的詞典配置:

image
強烈建議,開啟混淆後,配置詞典前,先打個包執行一下確定可以正常執行。
最後上面的混淆詞典,分別來自不同的開源專案:
https://github.com/RockyQu/ProguardDictionary
包含使用Java關鍵詞的詞典。
https://github.com/o2e/ProguardDictionaryGenerator
包含最後那個全是非常神奇的字元的。
https://github.com/WrBug/FrenziedProguard
包含1il,中文,0oO的。
放一個混淆後的apk地址,如果實在懶得run又想看看效果:
http://wanandroid.com/blogimgs/57ed3c61-08ee-4a3f-b859-f3cd1d748437.apk
原文出自微信公眾號:鴻祥