๐Ÿ“ฆ anatawa12 / DecompileCrasher

โ˜… 16 stars โ‘‚ 1 forks ๐Ÿ‘ 16 watching โš–๏ธ MIT License
gradle-pluginobfuscationobfuscator
๐Ÿ“ฅ Clone https://github.com/anatawa12/DecompileCrasher.git
HTTPS git clone https://github.com/anatawa12/DecompileCrasher.git
SSH git clone git@github.com:anatawa12/DecompileCrasher.git
CLI gh repo clone anatawa12/DecompileCrasher
anatawa12 anatawa12 Update a12 maintenance Link 3f97414 4 years ago ๐Ÿ“ History
๐Ÿ“‚ master View all commits โ†’
๐Ÿ“ .github
๐Ÿ“ buildSrc
๐Ÿ“ gradle
๐Ÿ“ gradle-plugin
๐Ÿ“ readme-contents
๐Ÿ“ src
๐Ÿ“„ .gitignore
๐Ÿ“„ build.gradle.kts
๐Ÿ“„ gradle.properties
๐Ÿ“„ gradlew
๐Ÿ“„ gradlew.bat
๐Ÿ“„ LICENSE
๐Ÿ“„ README.md
๐Ÿ“„ README.md

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