ClassResGuard
Introduction: 一个超全的 Android 马甲包混淆工具
Tags:
前言
改过马甲包的都知道每次修改都需要修改大量文件名称,ClassResGuard 由此而来,一键修改 className,resName,添加垃圾文件 下面会有详细介绍,修改完所有引用的地方都会一键替换成最新修改的,修改 layout 名称的同时可以修改 class 中相对应的 binding 名称 一键添加垃圾类(普通 java class,Activity class,layout,drawable,并且 Activity 会 自动在 AndroidManifest.xml 里注册,还会绑定生成的垃圾 xml), 下面会有详细介绍.
如果觉得此库不能满足你的需求可以看看XmlClassGuard
警告警告⚠️
由于是在本地操作,任务执行是不可逆的,故务必做好代码备份,否则代码将很难还原
使用
1.在 setting.gradle 里配置
pluginManagement {
repositories {
maven { url 'https://jitpack.io' }
}
}
2.在 build.gradle(project)中配置
buildscript {
dependencies {
classpath "com.github.coolxinxin:ClassResGuard:1.0.7"
}
}
3.在 build.gradle(app)中配置
apply plugin: "class-res-guard"
//以下前缀名称为必须,可参考以下配置
classResGuard {
//renameClass Task
//Class 的前缀名称,固定前缀配单个,随机前缀配置需要随机的前缀数组["Large","SuperT"]
classPrefixName = ["Leo"]
//renameDir Task
//dir 的前缀名称,配置同上
dirPrefixName = ["leo"]
//renameRes Task
//res 的前缀名称,配置同上
resPrefixName = ["leo_ta"]
//需要修改的 res 文件目录
changeResDir = ["drawable", "layout", "mipmap-hdpi"]
//addJunkFile Task
//生成 java 垃圾文件的目录,可以配置不存在的目录
junkPackage = "com.leos.superplugin.junk"
//需要导入的 R 资源文件包,切记不要配错,否则垃圾文件中的 R 资源文件包需要自己手动导入
junkResPackage = "com.leos.superplugin"
//生成 java Activity 垃圾文件中的方法数
activityClassMethodCount = 10
//生成 java Activity 文件的数量
activityClassCount = 1
//生成 java 普通垃圾文件中的方法数
normalClassMethodCount = 0
//生成 java 普通文件的数量
normalClassCount = 0
//生成 layout 文件的数量
layoutClassCount = 1
//生成 layout 文件中 view 的数量
layoutClassMethodCount = 10
//生成 drawable 文件的数量
drawableClassCount = 0
//添加 color 资源的数量 values/color.xml
colorCount = 10
//添加 string 资源的数量 values/strings.xml
stringsCount = 10
//color 的前缀名称,colorCount>0 时,必须配置
colorPrefixName = ["leo"]
//strings 的前缀名称,可配可不配
stringsPrefixName = [""]
}
如图看到以下任务
任务介绍
分别是 addJunkFile,renameClass,renameDir,renameRes 这 4 个任务之间没有任何关系,下面将一一介绍这些任务的功能
1.addJunkFile
该任务是一个添加垃圾文件的任务,添加一些垃圾资源降低 Google 的代码查重率
classResGuard {
//生成 java 垃圾文件的目录,可以配置不存在的目录
junkPackage = "com.leos.superplugin.junk"
//需要导入的 R 资源文件包,切记不要配错,否则垃圾文件中的 R 资源文件包需要自己手动导入
junkResPackage = "com.leos.superplugin"
//生成 java Activity 垃圾文件中的方法数
activityClassMethodCount = 10
//生成 java Activity 文件的数量
activityClassCount = 1
//生成 java 普通垃圾文件中的方法数
normalClassMethodCount = 0
//生成 java 普通文件的数量
normalClassCount = 0
//生成 layout 文件的数量
layoutClassCount = 1
//生成 layout 文件中 view 的数量
layoutClassMethodCount = 10
//生成 drawable 文件的数量
drawableClassCount = 0
//添加 color 资源的数量 values/color.xml
colorCount = 10
//添加 string 资源的数量 values/strings.xml
stringsCount = 10
//color 的前缀名称,colorCount>0 时,必须配置
colorPrefixName = ["leo"]
//strings 的前缀名称,可配可不配
stringsPrefixName = [""]
}
2.renameClass
该任务是一个修改 class 文件的任务,在所有的 class 类名前加前缀,需要固定前缀配单个,需要随机前缀配置多个前缀,如["Large","SuperT"]
classResGuard {
//Class 的前缀名称,固定前缀配单个,随机前缀配置需要随机的前缀数组["Large","SuperT"]
classPrefixName = ["Leo"]
}
3.renameDir
该任务是一个修改文件夹名称的目录,注:只修改有文件的文件夹目录,没文件的目录不会被修改
classResGuard {
//dir 的前缀名称,配置同上
dirPrefixName = ["leo"]
}
4.renameRes
该任务是一个修改 res 资源文件的任务,class 中的 binding 名称也会相对应的修改,无需手动修改任何文件
classResGuard {
//res 的前缀名称,配置同上
resPrefixName = ["leo_ta"]
//需要修改的 res 文件目录
changeResDir = ["drawable", "layout", "mipmap-hdpi"]
}