From d00e5b03e1c69c62db1e7b42425a5a967be8b8ec Mon Sep 17 00:00:00 2001 From: Adam Date: Sun, 1 Feb 2015 22:19:28 -0500 Subject: [PATCH] Doesn't work and I don't know why --- .../info/sigterm/deob/attributes/code/Instruction.java | 2 +- .../sigterm/deob/attributes/code/instructions/Return.java | 1 - src/main/java/info/sigterm/deob/execution/Execution.java | 2 ++ src/main/java/info/sigterm/deob/execution/Frame.java | 7 ++----- src/main/java/info/sigterm/deob/execution/Path.java | 8 +++++++- 5 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/main/java/info/sigterm/deob/attributes/code/Instruction.java b/src/main/java/info/sigterm/deob/attributes/code/Instruction.java index 12020bc335..1d2a6ed6e9 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/Instruction.java +++ b/src/main/java/info/sigterm/deob/attributes/code/Instruction.java @@ -39,7 +39,7 @@ public abstract class Instruction public String getDesc(Frame frame) { - return null; + return type.getName(); } protected void addJump(int offset) diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/Return.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/Return.java index 4163b87d7b..350b613ab9 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/Return.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/Return.java @@ -17,7 +17,6 @@ public class Return extends Instruction @Override public void execute(Frame e) { - // XXX exceptions? Object ret = e.getStack().pop(); e.getPath().returnFrame(this, ret); } diff --git a/src/main/java/info/sigterm/deob/execution/Execution.java b/src/main/java/info/sigterm/deob/execution/Execution.java index bd5eb3e05f..336e4c9215 100644 --- a/src/main/java/info/sigterm/deob/execution/Execution.java +++ b/src/main/java/info/sigterm/deob/execution/Execution.java @@ -23,6 +23,8 @@ public class Execution ObjectInstance object = p.createObject(instance); p.invoke(method, object); + + //process(); } public void addPath(Path p) diff --git a/src/main/java/info/sigterm/deob/execution/Frame.java b/src/main/java/info/sigterm/deob/execution/Frame.java index 0b9d3ee857..a31d5709f9 100644 --- a/src/main/java/info/sigterm/deob/execution/Frame.java +++ b/src/main/java/info/sigterm/deob/execution/Frame.java @@ -67,17 +67,14 @@ public class Frame Instruction i = ins.findInstruction(pc); - String desc = i.getDesc(this); - if (desc != null) - System.out.println(desc); - try { i.execute(this); + System.out.println(i.getDesc(this)); } catch (Throwable ex) { - System.err.println("Error executing instruction in " + method.getName() + " " + method.getDescriptor() + " in class " + method.getMethods().getClassFile().getName() + " at pc " + pc); + System.err.println("Error executing instruction " + i.getDesc(this) + " in " + method.getName() + " " + method.getDescriptor() + " in class " + method.getMethods().getClassFile().getName() + " at pc " + pc); System.err.println("Frame stack (grows downward):"); while (stack.getSize() > 0) { diff --git a/src/main/java/info/sigterm/deob/execution/Path.java b/src/main/java/info/sigterm/deob/execution/Path.java index a0d62898d9..33b995819e 100644 --- a/src/main/java/info/sigterm/deob/execution/Path.java +++ b/src/main/java/info/sigterm/deob/execution/Path.java @@ -97,7 +97,13 @@ public class Path for (int i = 0; i < args.length; ++i) vars.set(i, args[i]); frames.push(f); - f.execute(); + + while (!frames.isEmpty()) + { + f = frames.peek(); + f.execute(); + frames.pop(); + } } public void returnFrame(Instruction i, Object value)