From eef43dd9136c5f8cebd65821c6be72965f21165c Mon Sep 17 00:00:00 2001 From: Adam Date: Sun, 3 Jan 2016 19:58:46 -0500 Subject: [PATCH] Actually this --- .../instruction/types/MappableInstruction.java | 2 +- .../deob/attributes/code/instructions/If.java | 4 ++-- .../deob/attributes/code/instructions/If0.java | 4 ++-- .../deob/attributes/code/instructions/IfNe.java | 15 +++++++++++++++ .../code/instructions/InvokeInterface.java | 4 ++-- .../code/instructions/InvokeSpecial.java | 4 ++-- .../code/instructions/InvokeStatic.java | 4 ++-- .../code/instructions/InvokeVirtual.java | 4 ++-- .../attributes/code/instructions/PutField.java | 4 ++-- .../attributes/code/instructions/PutStatic.java | 4 ++-- .../deobfuscators/rename/MappingExecutorUtil.java | 3 ++- 11 files changed, 34 insertions(+), 18 deletions(-) diff --git a/src/main/java/net/runelite/deob/attributes/code/instruction/types/MappableInstruction.java b/src/main/java/net/runelite/deob/attributes/code/instruction/types/MappableInstruction.java index d42d15986e..19f28200be 100644 --- a/src/main/java/net/runelite/deob/attributes/code/instruction/types/MappableInstruction.java +++ b/src/main/java/net/runelite/deob/attributes/code/instruction/types/MappableInstruction.java @@ -7,5 +7,5 @@ public interface MappableInstruction { void map(ParallelExecutorMapping mappings, InstructionContext ctx, InstructionContext other); - boolean isSame(MappableInstruction other); + boolean isSame(InstructionContext thisIc, InstructionContext otherIc); } diff --git a/src/main/java/net/runelite/deob/attributes/code/instructions/If.java b/src/main/java/net/runelite/deob/attributes/code/instructions/If.java index 15d7905fbc..41807608b2 100644 --- a/src/main/java/net/runelite/deob/attributes/code/instructions/If.java +++ b/src/main/java/net/runelite/deob/attributes/code/instructions/If.java @@ -120,8 +120,8 @@ public abstract class If extends Instruction implements JumpingInstruction, Comp } @Override - public boolean isSame(MappableInstruction other) + public boolean isSame(InstructionContext thisIc, InstructionContext otherIc) { - return this.getClass() == other.getClass(); + return thisIc.getInstruction().getClass() == otherIc.getInstruction().getClass(); } } diff --git a/src/main/java/net/runelite/deob/attributes/code/instructions/If0.java b/src/main/java/net/runelite/deob/attributes/code/instructions/If0.java index 839866bd60..c43eb7694a 100644 --- a/src/main/java/net/runelite/deob/attributes/code/instructions/If0.java +++ b/src/main/java/net/runelite/deob/attributes/code/instructions/If0.java @@ -118,8 +118,8 @@ public abstract class If0 extends Instruction implements JumpingInstruction, Com } @Override - public boolean isSame(MappableInstruction other) + public boolean isSame(InstructionContext thisIc, InstructionContext otherIc) { - return this.getClass() == other.getClass(); + return thisIc.getInstruction().getClass() == otherIc.getInstruction().getClass(); } } diff --git a/src/main/java/net/runelite/deob/attributes/code/instructions/IfNe.java b/src/main/java/net/runelite/deob/attributes/code/instructions/IfNe.java index 817c1aa508..4b5fcc1620 100644 --- a/src/main/java/net/runelite/deob/attributes/code/instructions/IfNe.java +++ b/src/main/java/net/runelite/deob/attributes/code/instructions/IfNe.java @@ -2,6 +2,8 @@ package net.runelite.deob.attributes.code.instructions; import net.runelite.deob.attributes.code.InstructionType; import net.runelite.deob.attributes.code.Instructions; +import net.runelite.deob.attributes.code.instruction.types.MappableInstruction; +import net.runelite.deob.execution.InstructionContext; public class IfNe extends If0 { @@ -10,4 +12,17 @@ public class IfNe extends If0 super(instructions, type, pc); } + @Override + public boolean isSame(InstructionContext thisIc, InstructionContext otherIc) + { + if (super.isSame(thisIc, otherIc)) + return true; + + if (otherIc.getInstruction() instanceof IfCmpNe) + { + // check for one side being 0 + } + + return false; + } } diff --git a/src/main/java/net/runelite/deob/attributes/code/instructions/InvokeInterface.java b/src/main/java/net/runelite/deob/attributes/code/instructions/InvokeInterface.java index fe547b6de9..31fd3a7184 100644 --- a/src/main/java/net/runelite/deob/attributes/code/instructions/InvokeInterface.java +++ b/src/main/java/net/runelite/deob/attributes/code/instructions/InvokeInterface.java @@ -173,8 +173,8 @@ public class InvokeInterface extends Instruction implements InvokeInstruction } @Override - public boolean isSame(MappableInstruction other) + public boolean isSame(InstructionContext thisIc, InstructionContext otherIc) { - return this.getClass() == other.getClass(); + return thisIc.getInstruction().getClass() == otherIc.getInstruction().getClass(); } } diff --git a/src/main/java/net/runelite/deob/attributes/code/instructions/InvokeSpecial.java b/src/main/java/net/runelite/deob/attributes/code/instructions/InvokeSpecial.java index 15a22f4d58..110aa39481 100644 --- a/src/main/java/net/runelite/deob/attributes/code/instructions/InvokeSpecial.java +++ b/src/main/java/net/runelite/deob/attributes/code/instructions/InvokeSpecial.java @@ -168,8 +168,8 @@ public class InvokeSpecial extends Instruction implements InvokeInstruction } @Override - public boolean isSame(MappableInstruction other) + public boolean isSame(InstructionContext thisIc, InstructionContext otherIc) { - return this.getClass() == other.getClass(); + return thisIc.getInstruction().getClass() == otherIc.getInstruction().getClass(); } } diff --git a/src/main/java/net/runelite/deob/attributes/code/instructions/InvokeStatic.java b/src/main/java/net/runelite/deob/attributes/code/instructions/InvokeStatic.java index 62fc29f1a5..b7e0298943 100644 --- a/src/main/java/net/runelite/deob/attributes/code/instructions/InvokeStatic.java +++ b/src/main/java/net/runelite/deob/attributes/code/instructions/InvokeStatic.java @@ -176,8 +176,8 @@ public class InvokeStatic extends Instruction implements InvokeInstruction } @Override - public boolean isSame(MappableInstruction other) + public boolean isSame(InstructionContext thisIc, InstructionContext otherIc) { - return this.getClass() == other.getClass(); + return thisIc.getInstruction().getClass() == otherIc.getInstruction().getClass(); } } diff --git a/src/main/java/net/runelite/deob/attributes/code/instructions/InvokeVirtual.java b/src/main/java/net/runelite/deob/attributes/code/instructions/InvokeVirtual.java index 70b7012832..ae4707e8c3 100644 --- a/src/main/java/net/runelite/deob/attributes/code/instructions/InvokeVirtual.java +++ b/src/main/java/net/runelite/deob/attributes/code/instructions/InvokeVirtual.java @@ -177,8 +177,8 @@ public class InvokeVirtual extends Instruction implements InvokeInstruction } @Override - public boolean isSame(MappableInstruction other) + public boolean isSame(InstructionContext thisIc, InstructionContext otherIc) { - return this.getClass() == other.getClass(); + return thisIc.getInstruction().getClass() == otherIc.getInstruction().getClass(); } } diff --git a/src/main/java/net/runelite/deob/attributes/code/instructions/PutField.java b/src/main/java/net/runelite/deob/attributes/code/instructions/PutField.java index 149db154a2..2555d0a801 100644 --- a/src/main/java/net/runelite/deob/attributes/code/instructions/PutField.java +++ b/src/main/java/net/runelite/deob/attributes/code/instructions/PutField.java @@ -124,8 +124,8 @@ public class PutField extends Instruction implements SetFieldInstruction } @Override - public boolean isSame(MappableInstruction other) + public boolean isSame(InstructionContext thisIc, InstructionContext otherIc) { - return this.getClass() == other.getClass(); + return thisIc.getInstruction().getClass() == otherIc.getInstruction().getClass(); } } diff --git a/src/main/java/net/runelite/deob/attributes/code/instructions/PutStatic.java b/src/main/java/net/runelite/deob/attributes/code/instructions/PutStatic.java index 117e0734fe..eaa92b03f2 100644 --- a/src/main/java/net/runelite/deob/attributes/code/instructions/PutStatic.java +++ b/src/main/java/net/runelite/deob/attributes/code/instructions/PutStatic.java @@ -106,8 +106,8 @@ public class PutStatic extends Instruction implements SetFieldInstruction } @Override - public boolean isSame(MappableInstruction other) + public boolean isSame(InstructionContext thisIc, InstructionContext otherIc) { - return this.getClass() == other.getClass(); + return thisIc.getInstruction().getClass() == otherIc.getInstruction().getClass(); } } diff --git a/src/main/java/net/runelite/deob/deobfuscators/rename/MappingExecutorUtil.java b/src/main/java/net/runelite/deob/deobfuscators/rename/MappingExecutorUtil.java index 2a30c15c34..21324889a7 100644 --- a/src/main/java/net/runelite/deob/deobfuscators/rename/MappingExecutorUtil.java +++ b/src/main/java/net/runelite/deob/deobfuscators/rename/MappingExecutorUtil.java @@ -100,7 +100,8 @@ public class MappingExecutorUtil MappableInstruction mi1 = (MappableInstruction) p1.getInstruction(), mi2 = (MappableInstruction) p2.getInstruction(); - assert mi1.isSame(mi2); + + assert mi1.isSame(p1, p2); //assert p1.getInstruction().getClass().equals(p2.getInstruction().getClass()); mi1.map(mappings, p1, p2);