From 42e4223e8367a95c8846d71e7822596b5ff86399 Mon Sep 17 00:00:00 2001 From: Adam Date: Fri, 7 Aug 2015 20:46:47 -0400 Subject: [PATCH] make illegal state exception less strict --- src/main/java/info/sigterm/deob/Deob.java | 16 ++++++++-------- .../deobfuscators/IllegalStateExceptions.java | 9 +++++---- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/src/main/java/info/sigterm/deob/Deob.java b/src/main/java/info/sigterm/deob/Deob.java index 8380a9bb85..53df162e1d 100644 --- a/src/main/java/info/sigterm/deob/Deob.java +++ b/src/main/java/info/sigterm/deob/Deob.java @@ -63,10 +63,10 @@ public class Deob System.out.println("constant param took " + bdur/1000L + " seconds"); // remove unhit blocks -// bstart = System.currentTimeMillis(); -// new UnusedBlocks().run(group); -// bdur = System.currentTimeMillis() - bstart; -// System.out.println("unused blocks took " + bdur/1000L + " seconds"); + bstart = System.currentTimeMillis(); + new UnusedBlocks().run(group); + bdur = System.currentTimeMillis() - bstart; + System.out.println("unused blocks took " + bdur/1000L + " seconds"); // remove unused parameters bstart = System.currentTimeMillis(); @@ -78,10 +78,10 @@ public class Deob //new Jumps().run(group); // remove unused fields -// bstart = System.currentTimeMillis(); -// new UnusedFields().run(group); -// bdur = System.currentTimeMillis() - bstart; -// System.out.println("unused fields took " + bdur/1000L + " seconds"); + bstart = System.currentTimeMillis(); + new UnusedFields().run(group); + bdur = System.currentTimeMillis() - bstart; + System.out.println("unused fields took " + bdur/1000L + " seconds"); //new ModularArithmeticDeobfuscation().run(group); diff --git a/src/main/java/info/sigterm/deob/deobfuscators/IllegalStateExceptions.java b/src/main/java/info/sigterm/deob/deobfuscators/IllegalStateExceptions.java index 79b6ac8b71..ac03c094fb 100644 --- a/src/main/java/info/sigterm/deob/deobfuscators/IllegalStateExceptions.java +++ b/src/main/java/info/sigterm/deob/deobfuscators/IllegalStateExceptions.java @@ -63,11 +63,9 @@ public class IllegalStateExceptions implements Deobfuscator // remove stack of if. boolean found = false; - boolean foundMethod = false; for (Frame f : execution.processedFrames) if (f.getMethod() == m) { - foundMethod = true; for (InstructionContext ic : f.getInstructions()) if (ic.getInstruction() == ins) // this is the if { @@ -78,8 +76,11 @@ public class IllegalStateExceptions implements Deobfuscator ic.removeStack(0); } } - assert foundMethod; - assert found; + if (!found) + { + System.out.println("Unable to locate instruction ctx to remove stack for illegalstateexception " + ins + " in " + m); + continue; + } // instruction is no longer at 'i' because we've just removed stuff... i = ilist.indexOf(ins);