From f27e410f5b9f9a5db08b5380dfb7a04ae66b0793 Mon Sep 17 00:00:00 2001 From: Adam Date: Tue, 28 Jul 2015 16:48:03 -0400 Subject: [PATCH] Fix rename unique, renaming fields depends on classgraph for searching deep for fields --- src/main/java/info/sigterm/deob/Field.java | 5 +++++ .../sigterm/deob/attributes/code/instructions/GetField.java | 1 + .../sigterm/deob/attributes/code/instructions/GetStatic.java | 1 + .../java/info/sigterm/deob/deobfuscators/RenameUnique.java | 4 ++-- 4 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/main/java/info/sigterm/deob/Field.java b/src/main/java/info/sigterm/deob/Field.java index 528e43f900..eedfac36b3 100644 --- a/src/main/java/info/sigterm/deob/Field.java +++ b/src/main/java/info/sigterm/deob/Field.java @@ -62,6 +62,11 @@ public class Field { return accessFlags; } + + public boolean isStatic() + { + return (accessFlags & ACC_STATIC) != 0; + } public String getName() { diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/GetField.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/GetField.java index 79a5cffbcf..759d284370 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/GetField.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/GetField.java @@ -82,6 +82,7 @@ public class GetField extends Instruction implements GetFieldInstruction return; info.sigterm.deob.Field f2 = cf.findFieldDeep(nat); + assert f2 != null; if (f2 == f) { diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/GetStatic.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/GetStatic.java index 906765590c..3e25792a34 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/GetStatic.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/GetStatic.java @@ -95,6 +95,7 @@ public class GetStatic extends Instruction implements GetFieldInstruction return; info.sigterm.deob.Field f2 = cf.findFieldDeep(nat); + assert f2 != null; if (f2 == f) { diff --git a/src/main/java/info/sigterm/deob/deobfuscators/RenameUnique.java b/src/main/java/info/sigterm/deob/deobfuscators/RenameUnique.java index 5fa9c388c3..763dab908a 100644 --- a/src/main/java/info/sigterm/deob/deobfuscators/RenameUnique.java +++ b/src/main/java/info/sigterm/deob/deobfuscators/RenameUnique.java @@ -163,6 +163,8 @@ public class RenameUnique implements Deobfuscator int i = 0; int classes = 0, fields = 0, methods = 0; + group.buildClassGraph(); + for (ClassFile cf : group.getClasses()) { if (cf.getName().length() > 2) @@ -183,8 +185,6 @@ public class RenameUnique implements Deobfuscator ++fields; } - group.buildClassGraph(); - // rename methods for (ClassFile cf : group.getClasses()) for (Method method : cf.getMethods().getMethods())