/DecompileCrasher

Primary LanguageKotlinMIT LicenseMIT

Decompile Crasher

a12 maintenance: Slowly Discord

A tool to make a Jar Hard to decompile. Decompiler will make invalid source code or internal error will be thrown

Sample

decompilable code

Main.java

decompiled output of this tool

JD-GUI

jd gui

intellij

idea

how-to-use

with gradle

add this

buildscript {
    dependces {
        classpath group: 'com.anatawa12.decompileCrasher', name: 'gradle-plugin', version: '<version>'
    }
}

apply plugin: 'com.anatawa12.tools.decompileCrasher'

task class signature is like this(in real, we use getter and setter from Kotlin)

class ObfuscationTask {
    // jar task to make jar which will obfuscation with this
    // get some data from jar task.
    // if you want to make ObfuscationTask, please set this field.
    Jar jarTask;

    // a class path to make CallSite
    // default value is "com/anatawa12/tools/lib/A"
    String solveClassPath;
    // method name of make CallSite for method
    // default value is "m"
    String methodSolveMethod;
    // method name of make CallSite for field(now not allowed)
    // default value is "m"
    String fieldSolveMethod;

    // output directory
    // defaut value is "$buildDir/libs"
    File destinationDir;
    // postfix of jar name. this will put after classfier
    // defaut value is "obfuscated"
    String postfix;

    // prefixes of class name which do not anything in this tool
    // default value is empty set
    void exclusions(String... exclusions);
    final Set<String> exclusions;

    // output class to make CallSite in the jar. if false, you must make it yourself.
    // default value is true
    boolean withIndyClass;
}

with Command line tools

download from Releases and see readme.en.txt or exec run_unix.sh or run_win.dat (please select by your OS).

License

this software was released under MIT License