diff --git a/src/main/java/info/sigterm/deob/Deob.java b/src/main/java/info/sigterm/deob/Deob.java index efeaaad804..f8ffc8c084 100644 --- a/src/main/java/info/sigterm/deob/Deob.java +++ b/src/main/java/info/sigterm/deob/Deob.java @@ -95,7 +95,7 @@ public class Deob //new ModularArithmeticDeobfuscation().run(group); - //new MethodInliner().run(group); + new MethodInliner().run(group); saveJar(group, args[1]); diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/Goto.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/Goto.java index e01a056893..2af510450b 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/Goto.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/Goto.java @@ -43,9 +43,15 @@ public class Goto extends Instruction implements JumpingInstruction public void write(DataOutputStream out) throws IOException { super.write(out); + int offset = to.getPc() - this.getPc(); + assert offset <= Short.MAX_VALUE; assert offset >= Short.MIN_VALUE; + + assert to.getInstructions() == this.getInstructions(); + assert to.getInstructions().getInstructions().contains(to); + out.writeShort(offset); } diff --git a/src/main/java/info/sigterm/deob/deobfuscators/MethodInliner.java b/src/main/java/info/sigterm/deob/deobfuscators/MethodInliner.java index 9663999a8f..683b384b11 100644 --- a/src/main/java/info/sigterm/deob/deobfuscators/MethodInliner.java +++ b/src/main/java/info/sigterm/deob/deobfuscators/MethodInliner.java @@ -200,6 +200,9 @@ public class MethodInliner implements Deobfuscator methodInstructions.remove(invokeIns); + methodInstructions.buildJumpGraph(); + invokeMethodInstructions.buildJumpGraph(); + for (Instruction i : invokeMethodInstructions.getInstructions()) { // move instructions over.