From 98cc1b1022d84961068a4594a6ecb3793f4c45bc Mon Sep 17 00:00:00 2001 From: Skylot Date: Fri, 28 Oct 2022 15:48:17 +0100 Subject: [PATCH] script: add sample `deobf by code` script (#1706) --- .../java/jadx/core/dex/nodes/MethodNode.java | 2 +- .../examples/scripts/deobf_by_code.jadx.kts | 38 +++++++++++++++++++ 2 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 jadx-plugins/jadx-script/examples/scripts/deobf_by_code.jadx.kts diff --git a/jadx-core/src/main/java/jadx/core/dex/nodes/MethodNode.java b/jadx-core/src/main/java/jadx/core/dex/nodes/MethodNode.java index 07607d7f1..011e61d7f 100644 --- a/jadx-core/src/main/java/jadx/core/dex/nodes/MethodNode.java +++ b/jadx-core/src/main/java/jadx/core/dex/nodes/MethodNode.java @@ -650,7 +650,7 @@ public class MethodNode extends NotificationAttrNode implements IMethodDetails, return loaded; } - public ICodeReader getCodeReader() { + public @Nullable ICodeReader getCodeReader() { return codeReader; } diff --git a/jadx-plugins/jadx-script/examples/scripts/deobf_by_code.jadx.kts b/jadx-plugins/jadx-script/examples/scripts/deobf_by_code.jadx.kts new file mode 100644 index 000000000..a590b2766 --- /dev/null +++ b/jadx-plugins/jadx-script/examples/scripts/deobf_by_code.jadx.kts @@ -0,0 +1,38 @@ +/* + Rename method if specific string is found +*/ + +import jadx.api.plugins.input.insns.Opcode +import jadx.core.dex.nodes.MethodNode + +val renamesMap = mapOf( + "specificString" to "newMethodName", + "AA6" to "aa6Method" +) + +val jadx = getJadxInstance() + +var n = 0 +jadx.rename.all { _, node -> + var newName : String? = null + if (node is MethodNode) { + // use quick instructions scanner + node.codeReader?.visitInstructions { insn -> + if (insn.opcode == Opcode.CONST_STRING) { + insn.decode() + val constStr = insn.indexAsString + val renameStr = renamesMap[constStr] + if (renameStr != null) { + log.info { "Found '$constStr' in method $node, renaming to '$renameStr'" } + newName = renameStr + n++ + } + } + } + } + newName +} + +jadx.afterLoad { + log.info { "Script '$scriptName' renamed $n methods" } +}