core: refactor deobfuscator

This commit is contained in:
Skylot
2015-02-21 13:01:19 +03:00
parent 7844e554aa
commit a532287ddf
37 changed files with 786 additions and 865 deletions
@@ -1,6 +1,5 @@
package jadx.tests.api;
import jadx.core.Consts;
import jadx.core.dex.nodes.ClassNode;
import java.io.File;
@@ -21,8 +20,7 @@ public class SmaliTest extends IntegrationTest {
File smaliFile = getSmaliFile(clsName);
File outDex = createTempFile(".dex");
compileSmali(smaliFile, outDex);
String fullClsName = Consts.DEFAULT_PACKAGE_NAME + "." + clsName;
return getClassNodeFromFile(outDex, fullClsName);
return getClassNodeFromFile(outDex, clsName);
}
private static File getSmaliFile(String clsName) {
@@ -12,42 +12,42 @@ import static org.junit.Assert.assertThat;
public class TestSwitchReturnFromCase extends IntegrationTest {
public static class TestCls {
public void test(int a) {
String s = null;
if (a > 1000) {
return;
}
switch (a % 4) {
case 1:
s = "1";
break;
case 2:
s = "2";
break;
case 3:
case 4:
s = "4";
break;
case 5:
return;
}
s = "5";
}
}
public static class TestCls {
public void test(int a) {
String s = null;
if (a > 1000) {
return;
}
switch (a % 4) {
case 1:
s = "1";
break;
case 2:
s = "2";
break;
case 3:
case 4:
s = "4";
break;
case 5:
return;
}
s = "5";
}
}
@Test
public void test() {
ClassNode cls = getClassNode(TestCls.class);
String code = cls.getCode().toString();
@Test
public void test() {
ClassNode cls = getClassNode(TestCls.class);
String code = cls.getCode().toString();
assertThat(code, containsString("switch (a % 4) {"));
assertEquals(5, count(code, "case "));
assertEquals(3, count(code, "break;"));
assertThat(code, containsString("switch (a % 4) {"));
assertEquals(5, count(code, "case "));
assertEquals(3, count(code, "break;"));
assertThat(code, containsOne("s = \"1\";"));
assertThat(code, containsOne("s = \"2\";"));
assertThat(code, containsOne("s = \"4\";"));
assertThat(code, containsOne("s = \"5\";"));
}
assertThat(code, containsOne("s = \"1\";"));
assertThat(code, containsOne("s = \"2\";"));
assertThat(code, containsOne("s = \"4\";"));
assertThat(code, containsOne("s = \"5\";"));
}
}