Android 源码通过makefile配置文件对系统APP进行代码混淆

ProGuard 工具简介
ProGuard是Java字节码最受欢迎的优化程序。它能够让Java代码变小90%变快20%。ProGuard通过混淆类名、属性、方法来提供对代码的保护,一次对抗反编译工程。
ProGuard是一个对Java类文件进行压缩,优化,混淆和校验的工具。
压缩过程查找并删除没有使用到的类,字段,方法和属性。优化过程对方法的字节码进行分析和优化。
混淆过程把剩余的元素名字该写成简短且无意义的名字。这些过程会使程序体积更小,运行更高效,更难被反编译。
最后的校验过程为类增加校验信息,但这个过程依赖J2ME和JDK6或以上的编译环境

再次之前我查阅了很多博客 都只说将 LOCAL_PROGUARD_E NABLED:= full LOCAL_PROGUARD_FLAG_FILES := proguard.flags
自己实际测试过是不行的 写这些的人肯定自己没有测试过很坑容易误导别人直接就复制别人的博客内容就进行发表 我写的博客都会经过我自己实际测试的才会发表

Android.mk文件中,用LOCAL_PROGUARD_ENABLED来配置混淆的模式:
LOCAL_PROGUARD_FLAG_FILES用来指定配置文件 如想用自己的配置文件就有这个属性来引用自己编写的配置文件
LOCAL_PROGUARD_ENABLED的取值比较多如下:

full:使用编译系统默认的配置:压缩但不混淆和优化,默认的混淆配置文件是build/core/proguard.flags 内部引用的是 proguard_basic_keeps.flags 可以将这个文件里面的内容拷贝出来在此基础上加上自己的东西

custom:和full一样,但不包括aapt生成的resource相关的混淆配置。

nosystem:不使用系统的默认配置,但使用aapt生成的resource相关的混淆配置,其他混淆由模块自己负责。

disabled:关闭混淆

obfuscation:和full一样,并且开启混淆

optimization:和full一样,并且开启优化

不设置时,如果是app,默认为full,如果是sdk,则默认为disabled。

那么mk 里面我们怎么写呢如下:

LOCAL_PROGUARD_FLAG_FILES := proguard.flags
LOCAL_PROGUARD_E NABLED:= obfuscation optimization
#LOCAL_PROGUARD_FLAGS := -include $(LOCAL_PATH)/proguard.flags

这个配置是啥意思呢?
指定了混淆配置文件 这个会同时使用你的混淆配置加系统模式配置进行混淆 如果你只想用你自己的可以将LOCAL_PROGUARD_FLAG_FILES注释 LOCAL_PROGUARD_FLAGS放出 在Android.mk 同级目录创建proguard.flags文件
LOCAL_PROGUARD_E NABLED:这个配置的意思是 打开混淆开关 并开启优化

编译成功后可以使用 jadx-gui-1.0.0.exe Android逆向工具查看是否混淆成功

你可能感兴趣的:(Android,apk后期,android,java)