Not sure if this is right, but two different ins ctxs were popping this, but the same instruction, so I made it compare instructions

This commit is contained in:
Adam
2015-10-17 23:16:13 -04:00
parent 46955ddcbc
commit f43a926e61
2 changed files with 14 additions and 5 deletions

View File

@@ -322,9 +322,17 @@ public class MultiplicationDeobfuscator implements Deobfuscator
return false;
}
Instruction poppedIns = null;
for (StackContext s : i.getPushes())
if (s.getPopped().size() > 1)
return false;
for (InstructionContext i2 : s.getPopped())
{
if (poppedIns == null)
poppedIns = i2.getInstruction();
else if (poppedIns != i2.getInstruction())
return false;
}
//if (s.getPopped().size() > 1)
// return false;
}
return true;
}

View File

@@ -466,7 +466,7 @@ public class MultiplicationDeobfuscatorTest
Assert.assertEquals(1, constant3.getConstantAsInt());
}
//@Test
@Test
public void test8()
{
ClassGroup group = ClassGroupFactory.generateGroup();
@@ -493,9 +493,9 @@ public class MultiplicationDeobfuscatorTest
label3 = new NOP(ins);
Instruction body[] = {
new GetStatic(ins, field.getPoolField()),
//new GetStatic(ins, field.getPoolField()),
constant1,
new IMul(ins),
//new IMul(ins),
constant2,
new IMul(ins),
@@ -515,6 +515,7 @@ public class MultiplicationDeobfuscatorTest
label3,
new InvokeStatic(ins, group.findClass("test").findMethod("func2").getPoolMethod()),
//new Pop(ins), new Pop(ins), new Pop(ins),
new VReturn(ins)
};