Android开发之代码混淆

初级混淆

使用proGuard进行代码混淆

1.参考教程:Android开发者指南(9) —— ProGuard
2.混淆模板:Android proguard-rules.pro 混淆模板
3.[Android 代码混淆 选项说明(https://blog.csdn.net/jjwwmlp456/article/details/44977721)

几个可以增加混淆强度的命令:

#将所有类放到跟目录下
-flattenpackagehierarchy

#使用唯一的类成员名称
-useuniqueclassmembernames

几个可以增加混淆强度的字典
1.https://github.com/ihbing/AndroidObfuseDictionary

几个使用时需要注意的命令:
1.-assumenosideeffects使用时一定不要加-dontoptimize才起作用

# 移除Log类打印各个等级日志的代码,打正式包的时候可以做为禁log使用,这里可以作为禁止log打印的功能使用
# 记得proguard-android.txt中一定不要加-dontoptimize才起作用
-assumenosideeffects class android.util.Log {
   public static int v(...);
   public static int i(...);
   public static int w(...);
   public static int d(...);
   public static int e(...);
}

[注]
1.eclipse只有将项目导出时才会进行混淆
2.1 proguard.config=proguard-project.txt//采用相对路径配置,直接读取项目根目录下proguard-project.txt文件
2.2 proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt//采用绝对路径

使用proGuard-GUI进行手动混淆

使用AndResGuard进行资源混淆

参考教程:AndResGuard集成笔记

增加7z压缩

参考教程:Android项目集成AndResGuard资源混淆两种方式
参考教程:https://github.com/shwenzhang/AndResGuard/blob/master/doc/how_to_work.zh-cn.md

注意点

1.如何打开Gradle中的Task任务?
Android开发之代码混淆_第1张图片

进阶混淆

使用StringFog对字符串Base64加密

参考教程:https://github.com/MegatronKing/StringFog

将字符串混淆成byte字节码

如下图
这里写图片描述
参考教程:https://github.com/ihbing/obfuseSmaliText

高阶混淆

修改proGuard工具的混淆字符

[注]AndroidStudio的自身proGuard混淆工具目录D:\Program Files\Android\Android Studio\gradle\m2repository\net\sf\proguard\proguard-base\D:\Program Files\Android\Android Studio\gradle\m2repository\net\proguard-base\

用无效代码对抗jadx&jd-gui

 //添加无效代码,对抗jadx & jd-gui
        boolean qwerty21345hjdnjd = false;
        while (qwerty21345hjdnjd) {
            switch (1) {
                case 1:
                    while (qwerty21345hjdnjd) {
                        try {
                            Throwable throwable=new Throwable();
                            Throwable cause = throwable.getCause();
                        } catch (NullPointerException e) {
                        } finally {
                        }
                    }
                    break;
            }
        }

参考

1.Android资源混淆工具
2.proGuard混淆笔记
3.Android代码混淆技术总结(一)
4.apk在线反混淆

你可能感兴趣的:(android开发)