From 6044c91079ae416ecaff2412f8ca8653f39e6f83 Mon Sep 17 00:00:00 2001 From: jeff Date: Tue, 10 Feb 2015 22:51:55 -0500 Subject: black list Object methods from deobfuscation --- src/cuchaz/enigma/Deobfuscator.java | 32 ++++++++++++++++++++++ .../enigma/inputs/translation/F_ObjectMethods.java | 19 +++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 test/cuchaz/enigma/inputs/translation/F_ObjectMethods.java diff --git a/src/cuchaz/enigma/Deobfuscator.java b/src/cuchaz/enigma/Deobfuscator.java index b54a94ac..9cd6e41f 100644 --- a/src/cuchaz/enigma/Deobfuscator.java +++ b/src/cuchaz/enigma/Deobfuscator.java @@ -397,6 +397,38 @@ public class Deobfuscator { } public boolean isObfuscatedIdentifier(Entry obfEntry) { + + if (obfEntry instanceof MethodEntry) { + + // HACKHACK: Object methods are not obfuscated identifiers + MethodEntry obfMethodEntry = (MethodEntry)obfEntry; + String name = obfMethodEntry.getName(); + String sig = obfMethodEntry.getSignature().toString(); + if (name.equals("clone") && sig.equals("()Ljava/lang/Object;")) { + return false; + } else if (name.equals("equals") && sig.equals("(Ljava/lang/Object;)Z")) { + return false; + } else if (name.equals("finalize") && sig.equals("()V")) { + return false; + } else if (name.equals("getClass") && sig.equals("()Ljava/lang/Class;")) { + return false; + } else if (name.equals("hashCode") && sig.equals("()I")) { + return false; + } else if (name.equals("notify") && sig.equals("()V")) { + return false; + } else if (name.equals("notifyAll") && sig.equals("()V")) { + return false; + } else if (name.equals("toString") && sig.equals("()Ljava/lang/String;")) { + return false; + } else if (name.equals("wait") && sig.equals("()V")) { + return false; + } else if (name.equals("wait") && sig.equals("(J)V")) { + return false; + } else if (name.equals("wait") && sig.equals("(JI)V")) { + return false; + } + } + return m_jarIndex.containsObfEntry(obfEntry); } diff --git a/test/cuchaz/enigma/inputs/translation/F_ObjectMethods.java b/test/cuchaz/enigma/inputs/translation/F_ObjectMethods.java new file mode 100644 index 00000000..4e091797 --- /dev/null +++ b/test/cuchaz/enigma/inputs/translation/F_ObjectMethods.java @@ -0,0 +1,19 @@ +package cuchaz.enigma.inputs.translation; + +public class F_ObjectMethods { + + public void callEmAll() + throws Throwable { + clone(); + equals(this); + finalize(); + getClass(); + hashCode(); + notify(); + notifyAll(); + toString(); + wait(); + wait(0); + wait(0, 0); + } +} -- cgit v1.2.3