35 lines
877 B
Kotlin
35 lines
877 B
Kotlin
import jadx.api.plugins.options.OptionFlag.PER_PROJECT
|
|
|
|
/**
|
|
* Custom resources regexp deobfuscator
|
|
*/
|
|
|
|
val jadx = getJadxInstance()
|
|
|
|
val regexOpt = jadx.options.registerString(
|
|
name = "regex",
|
|
desc = "Apply resources rename for file names matches regex",
|
|
defaultValue = """[Oo0]+\.xml""",
|
|
).flags(PER_PROJECT)
|
|
|
|
val regex = regexOpt.value.toRegex()
|
|
var n = 0
|
|
|
|
jadx.stages.prepare {
|
|
for (resFile in jadx.internalDecompiler.resources) {
|
|
val fullName = resFile.originalName
|
|
val name = fullName.substringAfterLast('/')
|
|
if (name matches regex) {
|
|
val path = fullName.substringBeforeLast('/') // TODO: path also may be obfuscated
|
|
val ext = name.substringAfterLast('.')
|
|
val newName = "$path/res-${n++}.$ext"
|
|
log.info { "renaming resource: '$fullName' to '$newName'" }
|
|
resFile.deobfName = newName
|
|
}
|
|
}
|
|
}
|
|
|
|
jadx.afterLoad {
|
|
log.info { "Renames count: $n" }
|
|
}
|