From e70573589c092b0d2474fa745b1346379cf8767b Mon Sep 17 00:00:00 2001 From: jeff Date: Fri, 5 Sep 2014 01:15:43 -0400 Subject: added proguard to the gradle config to create obfuscated jars for testing added simple tests for the deobufscator class --- build.gradle | 65 ++++++++++++++++++-------------- test/cuchaz/enigma/TestDeobfuscator.java | 51 +++++++++++++++++++++++++ test/cuchaz/enigma/inputs/Keep.java | 9 +++++ test/cuchaz/enigma/inputs/LoneClass.java | 16 ++++++++ 4 files changed, 113 insertions(+), 28 deletions(-) create mode 100644 test/cuchaz/enigma/TestDeobfuscator.java create mode 100644 test/cuchaz/enigma/inputs/Keep.java create mode 100644 test/cuchaz/enigma/inputs/LoneClass.java diff --git a/build.gradle b/build.gradle index 7409f936..4fd004fd 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,8 @@ buildscript { } dependencies { - classpath 'eu.appsatori:gradle-fatjar-plugin:0.2-rc1' + classpath "eu.appsatori:gradle-fatjar-plugin:0.2-rc1" + classpath "net.sf.proguard:proguard-gradle:5.0" } } @@ -19,41 +20,29 @@ targetCompatibility = 1.7 group = "com.cuchazinteractive" archivesBaseName = "enigma" -version = "0.5b" +version = "0.5.1b" -sourceSets -{ - main - { - java - { +sourceSets { + main { + java { srcDir "src" } - resources - { + resources { srcDir "conf" } } - test - { - java - { + test { + java { srcDir "test" } - resources - { - srcDir "conf" - } } } -repositories -{ +repositories { mavenCentral() } -dependencies -{ +dependencies { compile fileTree( dir: "libs", include: "*.jar" ) compile "de.sciss:jsyntaxpane:1.0.0" compile "com.google.guava:guava:17.0" @@ -62,13 +51,11 @@ dependencies testCompile "junit:junit:4.11" } -fatJar -{ - from ".", { - include "*.txt" +fatJar { + from( "." ) { + include( "*.txt" ) } - manifest - { + manifest { attributes( "Title": archivesBaseName, "Manifest-Version": "1.0", @@ -77,3 +64,25 @@ fatJar ) } } + +task jarTestCases( type: Jar ) { + from( sourceSets.test.output ) { + include( "cuchaz/enigma/inputs/**" ) + } + archiveName( "testCases.jar" ) +} + +task obfTestCases( type: proguard.gradle.ProGuardTask ) { + dependsOn jarTestCases + + injars( "build/libs/testCases.jar" ) + outjars( "build/libs/testCases.obf.jar" ) + + libraryjars( "${System.getProperty('java.home')}/lib/rt.jar" ) + overloadaggressively + repackageclasses + allowaccessmodification + + keep( "class cuchaz.enigma.inputs.Keep" ) + dontshrink +} \ No newline at end of file diff --git a/test/cuchaz/enigma/TestDeobfuscator.java b/test/cuchaz/enigma/TestDeobfuscator.java new file mode 100644 index 00000000..3310fbcc --- /dev/null +++ b/test/cuchaz/enigma/TestDeobfuscator.java @@ -0,0 +1,51 @@ +package cuchaz.enigma; + +import static org.junit.Assert.*; + +import java.io.File; +import java.io.IOException; +import java.util.List; + +import org.junit.Test; + +import com.beust.jcommander.internal.Lists; + +import cuchaz.enigma.mapping.ClassEntry; + +public class TestDeobfuscator +{ + private Deobfuscator getDeobfuscator( ) + throws IOException + { + return new Deobfuscator( new File( "build/libs/testCases.obf.jar" ) ); + } + + @Test + public void loadJar( ) + throws Exception + { + getDeobfuscator(); + } + + @Test + public void getClasses( ) + throws Exception + { + Deobfuscator deobfuscator = getDeobfuscator(); + List obfClasses = Lists.newArrayList(); + List deobfClasses = Lists.newArrayList(); + deobfuscator.getSeparatedClasses( obfClasses, deobfClasses ); + assertEquals( 1, obfClasses.size() ); + assertEquals( "none/a", obfClasses.get( 0 ).getName() ); + assertEquals( 1, deobfClasses.size() ); + assertEquals( "cuchaz/enigma/inputs/Keep", deobfClasses.get( 0 ).getName() ); + } + + @Test + public void decompileClass( ) + throws Exception + { + Deobfuscator deobfuscator = getDeobfuscator(); + deobfuscator.getSource( deobfuscator.getSourceTree( "none/a" ) ); + } +} diff --git a/test/cuchaz/enigma/inputs/Keep.java b/test/cuchaz/enigma/inputs/Keep.java new file mode 100644 index 00000000..3c12baea --- /dev/null +++ b/test/cuchaz/enigma/inputs/Keep.java @@ -0,0 +1,9 @@ +package cuchaz.enigma.inputs; + +public class Keep +{ + public static void main( String[] args ) + { + System.out.println( "Keep me!" ); + } +} diff --git a/test/cuchaz/enigma/inputs/LoneClass.java b/test/cuchaz/enigma/inputs/LoneClass.java new file mode 100644 index 00000000..a3d8cded --- /dev/null +++ b/test/cuchaz/enigma/inputs/LoneClass.java @@ -0,0 +1,16 @@ +package cuchaz.enigma.inputs; + +public class LoneClass +{ + private String m_name; + + public LoneClass( String name ) + { + m_name = name; + } + + public String getName( ) + { + return m_name; + } +} -- cgit v1.2.3