From b5a9dd8ee78d54a551bdbe76923ef8bd6cacf935 Mon Sep 17 00:00:00 2001 From: Adam Date: Wed, 6 Apr 2016 21:36:39 -0400 Subject: [PATCH] ah, found it. duh. --- .../asm/attributes/code/Instruction.java | 5 ----- .../code/instructions/GetField.java | 2 +- .../code/instructions/InvokeSpecial.java | 6 ------ .../code/instructions/InvokeStatic.java | 6 ------ .../attributes/code/instructions/LDC_W.java | 2 +- .../net/runelite/asm/execution/Frame.java | 4 ++-- .../runelite/asm/execution/StackContext.java | 1 - .../deob/deobfuscators/UnusedParameters.java | 21 +++++++++++-------- 8 files changed, 16 insertions(+), 31 deletions(-) diff --git a/src/main/java/net/runelite/asm/attributes/code/Instruction.java b/src/main/java/net/runelite/asm/attributes/code/Instruction.java index 42e97fba99..14241ba02e 100644 --- a/src/main/java/net/runelite/asm/attributes/code/Instruction.java +++ b/src/main/java/net/runelite/asm/attributes/code/Instruction.java @@ -174,11 +174,6 @@ public abstract class Instruction implements Cloneable { return length; } - - public String getDesc(Frame frame) - { - return type.getName() + " at pc " + frame.getPc() + " in " + frame.getMethod().getName() + " " + frame.getMethod().getDescriptor() + " class " + frame.getMethod().getCode().getAttributes().getClassFile().getName(); - } public abstract InstructionContext execute(Frame e); diff --git a/src/main/java/net/runelite/asm/attributes/code/instructions/GetField.java b/src/main/java/net/runelite/asm/attributes/code/instructions/GetField.java index f6167ee561..ac2e8a7af5 100644 --- a/src/main/java/net/runelite/asm/attributes/code/instructions/GetField.java +++ b/src/main/java/net/runelite/asm/attributes/code/instructions/GetField.java @@ -42,7 +42,7 @@ public class GetField extends Instruction implements GetFieldInstruction public String toString() { Method m = this.getInstructions().getCode().getAttributes().getMethod(); - return "getfield " + myField + " in " + m; + return "getfield " + myField + " in " + m + " at pc 0x" + Integer.toHexString(this.getPc()); } @Override diff --git a/src/main/java/net/runelite/asm/attributes/code/instructions/InvokeSpecial.java b/src/main/java/net/runelite/asm/attributes/code/instructions/InvokeSpecial.java index 8a8317610c..58de97394a 100644 --- a/src/main/java/net/runelite/asm/attributes/code/instructions/InvokeSpecial.java +++ b/src/main/java/net/runelite/asm/attributes/code/instructions/InvokeSpecial.java @@ -117,12 +117,6 @@ public class InvokeSpecial extends Instruction implements InvokeInstruction { return "invokespecial " + method + " in " + this.getInstructions().getCode().getAttributes().getMethod(); } - - @Override - public String getDesc(Frame frame) - { - return "invokespecial " + method.getNameAndType().getDescriptor() + " on " + method.getClassEntry().getName(); - } @Override public void removeParameter(int idx) diff --git a/src/main/java/net/runelite/asm/attributes/code/instructions/InvokeStatic.java b/src/main/java/net/runelite/asm/attributes/code/instructions/InvokeStatic.java index 65df74f40e..570b502ebc 100644 --- a/src/main/java/net/runelite/asm/attributes/code/instructions/InvokeStatic.java +++ b/src/main/java/net/runelite/asm/attributes/code/instructions/InvokeStatic.java @@ -112,12 +112,6 @@ public class InvokeStatic extends Instruction implements InvokeInstruction return ins; } - - @Override - public String getDesc(Frame frame) - { - return "invokestatic " + method.getNameAndType().getDescriptor() + " on " + method.getClassEntry().getName() + " return value " + method.getNameAndType().getDescriptor().getReturnValue(); - } @Override public void removeParameter(int idx) diff --git a/src/main/java/net/runelite/asm/attributes/code/instructions/LDC_W.java b/src/main/java/net/runelite/asm/attributes/code/instructions/LDC_W.java index 96042ba3b8..87b84db263 100644 --- a/src/main/java/net/runelite/asm/attributes/code/instructions/LDC_W.java +++ b/src/main/java/net/runelite/asm/attributes/code/instructions/LDC_W.java @@ -115,7 +115,7 @@ public class LDC_W extends Instruction implements PushConstantInstruction @Override - public String getDesc(Frame frame) + public String toString() { return "ldc_w " + value; } diff --git a/src/main/java/net/runelite/asm/execution/Frame.java b/src/main/java/net/runelite/asm/execution/Frame.java index 262ccc78a5..e5e3b0f7ee 100644 --- a/src/main/java/net/runelite/asm/execution/Frame.java +++ b/src/main/java/net/runelite/asm/execution/Frame.java @@ -220,7 +220,7 @@ public class Frame } catch (Throwable ex) { - System.err.println("Error executing instruction " + cur.getDesc(this)); + System.err.println("Error executing instruction " + cur); System.err.println("Frame stack (grows downward):"); while (stack.getSize() > 0) { @@ -228,7 +228,7 @@ public class Frame InstructionContext pushed = stacki.getPushed(); Frame frame = pushed.getFrame(); - System.err.println(pushed.getInstruction().getDesc(frame)); + System.err.println(pushed.getInstruction()); } System.err.println("end of stack"); ex.printStackTrace(); diff --git a/src/main/java/net/runelite/asm/execution/StackContext.java b/src/main/java/net/runelite/asm/execution/StackContext.java index 85b5f802b2..61931af7ab 100644 --- a/src/main/java/net/runelite/asm/execution/StackContext.java +++ b/src/main/java/net/runelite/asm/execution/StackContext.java @@ -48,7 +48,6 @@ public class StackContext public void addPopped(InstructionContext popped) { -// assert ParallellMappingExecutor.returnStacks.contains(this) == false; if (!this.poppeds.contains(popped)) this.poppeds.add(popped); } diff --git a/src/main/java/net/runelite/deob/deobfuscators/UnusedParameters.java b/src/main/java/net/runelite/deob/deobfuscators/UnusedParameters.java index a1380b3980..d4152ab117 100644 --- a/src/main/java/net/runelite/deob/deobfuscators/UnusedParameters.java +++ b/src/main/java/net/runelite/deob/deobfuscators/UnusedParameters.java @@ -61,9 +61,11 @@ public class UnusedParameters implements Deobfuscator unused.put(ms, u); } } - + private int processUnused(Execution execution, ClassGroup group) { + // XXX maybe only remove parameters at the very end, in the event i want to export a func? + int count = 0; for (List m : unused.keySet()) @@ -163,19 +165,20 @@ public class UnusedParameters implements Deobfuscator ii.removeParameter(paramIndex); // remove parameter from instruction - Collection ics = invokes.get(i);//execution.getInstructonContexts(i); + Collection ics = invokes.get(i); assert ics != null; if (ics != null) { - InstructionContext ins = ics.toArray(new InstructionContext[0])[0]; + for (InstructionContext ins : ics) + { + int pops = signature.size() - paramIndex - 1; // index from top of stack of parameter. 0 is the last parameter - int pops = signature.size() - paramIndex - 1; // index from top of stack of parameter. 0 is the last parameter + StackContext sctx = ins.getPops().get(pops); + if (sctx.getPushed().getInstruction().getInstructions() == null) + continue; - StackContext sctx = ins.getPops().get(pops); - if (sctx.getPushed().getInstruction().getInstructions() == null) - continue; - - ins.removeStack(pops); // remove parameter from stack + ins.removeStack(pops); // remove parameter from stack + } } } }