ArrayLoad also isnt part of expressions

This commit is contained in:
Adam
2016-03-28 18:41:28 -04:00
parent 51ae836cd8
commit fbb41000b8
2 changed files with 5 additions and 8 deletions

View File

@@ -15,6 +15,7 @@ import net.runelite.asm.Method;
import net.runelite.asm.attributes.Code;
import net.runelite.asm.attributes.code.Instruction;
import net.runelite.asm.attributes.code.Instructions;
import net.runelite.asm.attributes.code.instruction.types.ArrayLoad;
import net.runelite.asm.attributes.code.instruction.types.FieldInstruction;
import net.runelite.asm.attributes.code.instruction.types.GetFieldInstruction;
import net.runelite.asm.attributes.code.instruction.types.InvokeInstruction;
@@ -52,7 +53,8 @@ public class ModArith implements Deobfuscator
// invoke and array store pops are unrelated to each other
if (ctx.getInstruction() instanceof InvokeInstruction ||
ctx.getInstruction() instanceof ArrayStoreInstruction)
ctx.getInstruction() instanceof ArrayStoreInstruction ||
ctx.getInstruction() instanceof ArrayLoad)
return l;
set.add(ctx.getInstruction());
@@ -75,7 +77,6 @@ public class ModArith implements Deobfuscator
for (Frame f : execution.processedFrames)
{
outer:
for (InstructionContext ctx : f.getInstructions())
{
if (ctx.getInstruction() instanceof SetFieldInstruction)
@@ -546,7 +547,7 @@ public class ModArith implements Deobfuscator
private void insertGetterSetterMuls(Encryption encr)
{
// after getfield insert imul * setter
// before setfield insert inul * getter
// before setfield insert imul * getter
for (ClassFile cf : group.getClasses())
for (Method m : cf.getMethods().getMethods())
{
@@ -605,7 +606,7 @@ public class ModArith implements Deobfuscator
// imul
if (p.getType() == Integer.class)
{
ilist.add(++i, new LDC_W(ins, new net.runelite.asm.pool.Integer((int) p.setter)));
ilist.add(++i, new LDC_W(ins, (int) p.setter));
ilist.add(++i, new IMul(ins));
}
else if (p.getType() == Long.class)

View File

@@ -194,10 +194,6 @@ public class MultiplicationDeobfuscator implements Deobfuscator
assert me.subexpressions.isEmpty();
}
}
else
{
System.out.println("dup ins " + otherCtxI.getInstruction());
}
}
else if (i.getInstruction() instanceof GetFieldInstruction)
{