使用ProGuard进行Android代码混淆(保姆级教程)

一、ProGuard的功能

ProGuard是一个混淆代码的开源项目,主要是用来对java代码进行混淆,当然也就可以对java代码进行混淆,ProGuard主要有四个功能:压缩(Shrink),优化(Optimize),混淆(Obfuscate)和预检(Preveirfy)。

压缩: 就是将代码中没用的东西给删掉,比如你留下的没用的但是忘记删除的一些测试代码或者无用的类等。

优化: 对字节码进行优化删除无用的指令。

混淆: 使用cuyjno(这是我用脸在键盘上摩擦打出来的)等无意义的名称对类,字段和方法进行命名。

预检: 检查处理后代码能否正确执行。

ProGuard的这四个步骤都是可选的,我们可以通过配置脚本来决定执行其中的哪几个步骤。

二、开启ProGuard

如果要开启proguard,我们首先要把下面这个东西给添加到build.gradle中(这个是:app下的build.gradle,初学者可能会搞错),一般来说,Android studio会自动帮我们给添加好了,然后我们把这个minfyEnable改为true。就像下面这样。

1
2
3
4
5
6
7
buildTypes {
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}

当我们创建Android项目时,Android studio已经帮我们生成了proguard-rules.pro的文件(在Gradle Scripts下面)

在这里插入图片描述

我们可以在这个文件里面写入一些规则,比如哪些类需要保留,哪些类不保留,然后我们打包apk

我们将apk打包好后放到逆向软件中,然后进行一个逆向

在这里插入图片描述

然后我们发现,原来的变量名全部变成了a,b,c这类没有任何意义的字符,这样别人就很难分析你的代码。

变量名全部变成了a,b,c这类没有任何意义的字符,这样别人就很难分析你的代码。