Skip to content

Commit 62d1b18

Browse files
Janmm14ItzSomebody
authored andcommitted
Add alternate detection method for superblaubeere string decrypt method, fixes #887
1 parent fa16e8e commit 62d1b18

File tree

1 file changed

+19
-4
lines changed

1 file changed

+19
-4
lines changed

src/main/java/com/javadeobfuscator/deobfuscator/transformers/special/SuperblaubeereTransformer.java

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -432,11 +432,26 @@ && isDoubleIf(ain.getNext().getNext())) {
432432
continue;
433433
}
434434
MethodNode refMethod = TransformerHelper.findMethodNode(classNode, ((MethodInsnNode) first).name, "()V");
435-
AbstractInsnNode thirdInsn = refMethod.instructions.getFirst().getNext().getNext();
436-
if (!TransformerHelper.isPutStatic(thirdInsn, null, null, "[Ljava/lang/String;")) {
437-
continue;
435+
AbstractInsnNode possPutStaticInsn = refMethod.instructions.getFirst().getNext().getNext();
436+
if (!TransformerHelper.isPutStatic(possPutStaticInsn, null, null, "[Ljava/lang/String;")) {
437+
possPutStaticInsn = Utils.getPrevious(refMethod.instructions.getLast());
438+
if (!TransformerHelper.isPutStatic(possPutStaticInsn, null, null, "[Ljava/lang/String;")) {
439+
continue;
440+
}
441+
AbstractInsnNode prev = Utils.getPrevious(possPutStaticInsn);
442+
if (!TransformerHelper.isInvokeVirtual(prev, "java/lang/String", "split", "(Ljava/lang/String;)[Ljava/lang/String;")) {
443+
continue;
444+
}
445+
AbstractInsnNode firstReal = refMethod.instructions.getFirst();
446+
if (!Utils.isInstruction(firstReal)) {
447+
firstReal = Utils.getNext(firstReal);
448+
}
449+
AbstractInsnNode insn7 = Utils.getNext(firstReal, 6);
450+
if (!TransformerHelper.isInvokeVirtual(insn7, "java/lang/StackTraceElement", "getFileName","()Ljava/lang/String;")) {
451+
continue;
452+
}
438453
}
439-
FieldInsnNode insnNode = (FieldInsnNode) thirdInsn;
454+
FieldInsnNode insnNode = (FieldInsnNode) possPutStaticInsn;
440455
FieldNode field = TransformerHelper.findFieldNode(classNode, insnNode.name, insnNode.desc);
441456
Context context = new Context(provider);
442457
context.dictionary = classpath;

0 commit comments

Comments
 (0)