初级混淆
使用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任务?
文章图片
进阶混淆 使用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;
}
}
参考 【Android开发之代码混淆】1.Android资源混淆工具
2.proGuard混淆笔记
3.Android代码混淆技术总结(一)
4.apk在线反混淆
推荐阅读
- 从零开发一个完整的Android项目(九)——图片浏览
- Android开发|ViewPager自适应高度问题
- Android|Android 指定销毁一个Activity
- 【Android】简单图片浏览器
- 理解ButterKnife(自动生成绑定资源的代码)
- MAC下搭建Android Studio
- NestedScrollingParent 和NestedScrollingChild 实现嵌套滑动
- android用shape画一条横线
- 华为推送 的坑
- Duplicate class com.alipay.a.a.a found in modules classes.jar (:alipaySdk-15.6.2-20190416165036:) an