From 1f716bf10de91fff4c254c627847b34d93b895ef Mon Sep 17 00:00:00 2001 From: Adam Date: Sun, 25 Oct 2015 20:08:57 -0400 Subject: [PATCH] Small fix found by test, not sure if it breaks the larger picture --- .../deob/deobfuscators/arithmetic/ModArith.java | 4 +++- .../deob/deobfuscators/arithmetic/ModArithTest.java | 12 ++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/main/java/net/runelite/deob/deobfuscators/arithmetic/ModArith.java b/src/main/java/net/runelite/deob/deobfuscators/arithmetic/ModArith.java index a3a086e95d..77274f7713 100644 --- a/src/main/java/net/runelite/deob/deobfuscators/arithmetic/ModArith.java +++ b/src/main/java/net/runelite/deob/deobfuscators/arithmetic/ModArith.java @@ -419,8 +419,10 @@ public class ModArith implements Deobfuscator boolean g = isGetterOrSetter(field, true, s1), g2 = isGetterOrSetter(field, true, s2); + boolean inverse = false; if (g == g2) { + inverse = true; g = isGetterOrSetter(field, false, s1); g2 = isGetterOrSetter(field, false, s2); } @@ -432,7 +434,7 @@ public class ModArith implements Deobfuscator System.out.println("GOOD " + field.getName() + " " + s1 + " * " + s2 + " = " + smallest + " " + g + " " + g2); Pair p = new Pair(); p.field = field; - if (g) + if (g != inverse) { p.getter = s1; p.setter = s2; diff --git a/src/test/java/net/runelite/deob/deobfuscators/arithmetic/ModArithTest.java b/src/test/java/net/runelite/deob/deobfuscators/arithmetic/ModArithTest.java index 848ca191b2..6003bceac1 100644 --- a/src/test/java/net/runelite/deob/deobfuscators/arithmetic/ModArithTest.java +++ b/src/test/java/net/runelite/deob/deobfuscators/arithmetic/ModArithTest.java @@ -17,14 +17,15 @@ import org.junit.Test; class TestClass { private static int dummy(Object... args) { return 0; } - private static final int var = 42; private int field1051 = -1611704481; private int field2701; + private int field2138, field2130; public void test() { - new TestClass(); // to trick executor to call the constructor + TestClass tc = new TestClass(); // to trick executor to call the constructor + int var = 42; if (-1 != this.field1051 * 1928543073) { @@ -36,6 +37,13 @@ class TestClass { field2701 += -1868498967 * var; } + + field2138 = tc.dummy() * 1510226873; + field2130 = 572701809 * tc.field2138; + if (-1722291303 * field2130 >= var) + { + var = field2130 * -1722291303; + } } }