当前位置:   article > 正文

Android 混淆使用及其字典混淆(Proguard)_android 混淆字典

android 混淆字典

1.使用背景

ProGuard能够通过压缩、优化、混淆、预检等操作,检测并删除未使用的类,字段,方法和属性,分析和优化字节码,使用简短无意义的名称来重命名类,字段和方法。从而使代码更小、更高效、更难进行逆向工程。

Android代码混淆,又称Android混淆,是一种Android APP保护技术,用于保护APP不被破解和逆向分析。

所以在大部分的项目里,基本都会把混淆打开。

Tips:如果开启了混淆,Proguard默认情况下会对所有代码,包括第三方包都进行混淆,可是有些代码或者第三方包是不能混淆的,这就需要我们手动编写混淆规则来保持不能被混淆的部分。例如Gson库,Litepal库,有些东西用到的话,就得去proguard-rules.pro文件里配置一下。

2.开启混淆

需要在app的build.gradle文件里进行配置。

  1. android {
  2. ......
  3. defaultConfig {
  4. }
  5. buildTypes {
  6. release {
  7. minifyEnabled true // 开启代码混淆(必须的哈)
  8. zipAlignEnabled true
  9. shrinkResources true
  10. proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
  11. }
  12. }
  13. }
  1. minifyEnabled:是否进行代码混淆(开混淆就必须要这个哈)
  2. zipAlignEnabled:是否进行Zip压缩优化(可选)
  3. shrinkResources:是否移除未被使用的资源(可选)
  4. proguardFiles:混淆规则配置文件
  5. proguard-android.txt:AndroidStudio默认自动导入的规则,这个文件位于Android SDK根目录\tools\proguard\proguard-android.txt。这里面是一些比较常规的不能被混淆的代码规则。
  6. proguard-rules.pro:针对自己的项目需要特别定义的混淆规则,它位于项目每个Module的根目录下面,里面的内容需要我们自己编写。

3.Proguard配置规则

即在proguard-rules.pro里进行编写配置。

这儿我就不细说了,因为平时我也用不了那么多,这儿贴一个比较全的链接

Android 代码混淆规则 - 掘金

Tips:

AndroidMainfest中的类不混淆,所以四大组件和Application的子类和Framework层下所有的类默认不会进行混淆。自定义的View默认也不会被混淆;所以像网上贴的很多排除自定义View,或四大组件被混淆的规则在Android Studio中是无需加入的(我目前看来是如此的)

4.字典混淆

我的配置:

  1. # 混淆的压缩比例,0-7
  2. -optimizationpasses 5
  3. # 指定不去忽略非公共的库的类的成员
  4. -dontskipnonpubliclibraryclassmembers
  5. # 指定混淆是采用的算法
  6. -optimizations !code/simplification/arithmetic,!code/simplification/cast,!field/*,!class/merging/*
  7. # 指定外部模糊字典 proguard-chinese.txt 改为混淆文件名,下同
  8. -obfuscationdictionary proguard-1il.txt
  9. # 指定class模糊字典
  10. -classobfuscationdictionary proguard-1il.txt
  11. # 指定package模糊字典
  12. -packageobfuscationdictionary proguard-1il.txt

其实就是指定

  • -obfuscationdictionary dictionary_path:指定外部模糊字典
  • -classobfuscationdictionary dictionary_path:指定class模糊字典
  • -packageobfuscationdictionary dictionary_path:指定package模糊字典

这三个的模糊字典。让你的代码,搞起来特别没得可读性。

这个txt文件怎么生成,你可以自己写个脚本生成,也可以用网上已经写好的。

https://github.com/WrBug/FrenziedProguard/tree/master/proguard-file

下载好文件后,放在和proguard-rules.pro同级的文件目录里面:

我使用的是 proguard-1il.txt,使用后反编译查看,首先是包名:

其次是内容:

可以看到,里面的各种对象,方法,变量名,参数等等都被混淆了,变化非常之大。

5.是否生效

使用反编译工具Jadx查看

GitHub - skylot/jadx: Dex to Java decompiler

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/285569
推荐阅读
相关标签
  

闽ICP备14008679号