我发现了一个article,它引入了随机化字典条目的概念,而不是在混淆时使用标准的“a,B,c,...”作为类名和变量。他解释说,任务可以在构建时在gradle中运行,以生成一个随机文本文件,该文件可以替换默认提供的文件:
tasks.whenTaskAdded { currentTask ->
//Android Gradle plugin may change this task name in the future
def prefix = 'transformClassesAndResourcesWithProguardFor'
if (currentTask.name.startsWith(prefix)) {
def taskName = currentTask.name.replace(prefix,
'createProguardDictionariesFor')
task "$taskName" {
doLast {
createRandomizedDictonaries()
}
}
//append scramble task to proguard task
currentTask.dependsOn "$taskName"
}
}
然而,我不知道他是如何在gradle中运行createRandomizedDictonaries()
的,以及他是如何创建一个包含字母/整数/符号的随机列表的文本文件的。逻辑可能是这样的:
- 从gradle运行类中的函数。
- 读取主文本文件中的字符串(在应用程序中),并使用循环将它们逐个添加到字符串数组列表中?潜在地合并一些随机化逻辑,从文本文件中只添加X字符串?
- 如果所有字符串都被添加到Arraylist中,则使用一些随机化逻辑将X个字符串添加到另一个字符串Arraylist中,该字符串将用于ProGuard的混淆。
- 使用Arraylist中的随机字符串创建一个新的文本文件。
- 指示ProGuard使用新生成的文本文件进行模糊处理。
欢迎使用Kotlin和java的解决方案。
1条答案
按热度按时间v1l68za41#
我发现了一个关于使用gradle来构建混淆字典的网站。https://yrom.net/blog/2019/06/19/simple-codes-to-generate-obfuscation-dictionary/
我在我的gradle任务中运行代码,但它需要修改一点。以下是我的Gradle代码:
我想你可以设置你的字典规则。这是一个例子。不要忘记在www.example.com文件中添加模糊处理规则proguard-rules.pro file