Skidfuscator

Skidfuscator

Powerful Java Obfuscation at the click of your hand

Pricing 💡Docs

Secure

Protect your Java application with state-of-the-art obfuscation and encryption

Research-Backed

Backed by academic, proven and peer-reviewed theoretical concepts.

Rigorously Tested

Backed by a 50+ complete unit testing suite. Odds are, Skidfuscator will work out-of-the-box for you.

Fast Support

Weekly bug-fixes with nightly releases. Skidfuscator has unbeatable support.

String Encryption

Hide your Strings in your java application. Hide your endpoints and keep yourself secure.

Flow Obfuscation

Prevent reverse-engineers from understanding your software.

Renamer Obfuscation

Hide the name of your classes and prevent hackers from comprehending your jar

Native Obfuscation (Soon)

Translate your Java code into native JNI, adding a layer of protection.

Why Skidfuscator?

Skidfuscator is a java obfuscator for software developers and companies seeking to protect their Java-based applications from reverse engineering, tampering, and intellectual property theft. Skidfuscator employs a variety of advanced obfuscation techniques, such as control flow obfuscation, string encryption, and class and method renaming, which render the decompiled code significantly harder to understand and analyze. By utilizing these techniques, Skidfuscator increases the effort required to reverse engineer the application, effectively deterring potential attackers and preserving your competitive edge in the market.

How to use

Skidfuscator seeks to be a drag and drop experience, all you need to do is execute the following command to run obfuscation on your project:

java -jar Skidfuscator.jar obfuscate <path to jar>
Cool gif
Cool gif

Features

We currently are working on a variety of ways to approach this system using various lightweight obfuscation methods.

Skidfuscator is backed by research

Inspired by the greats, such as Christian Collberg's Taxonomy of Obfuscationopen in new window, and many more academic papers, Skidfuscator is the implementation in which theory meets real-world use.

Skidfuscator is not just-another-obfuscator

By leveraging the fact that your program is a culmination of many classes and methods, Skidfuscator is the second obfuscator to introduce interprocedural obfuscation. This makes reverse-engineering exponentially more complex and thwarts most if not all currently available deobfuscation tools.

Skidfuscator is compatible

With the optic of stability, Skidfuscator is compatible from Java 1.8 to Java 18. In addition, Skidfuscator offers pre-existing configurations for popular tools, such as Spigot, Forge, and Sponge for Minecraft, JDA for Discord, and various other toolset commonly prevalent in the Java community.

Learn more about Skidfuscator

Do not hesitate to ask all sales questions to [email protected]or to join our discordopen in new window

Transformers

As of right now, the following transformers are available in Skidfuscator:

Obfuscation StrategyJObfuscatorZelix KlassMasterSkidfuscator CommunitySkidfuscator Enterprise
Third Generation Flow
Bogus Jump Obfuscation
Bogus Exception Obfuscation
Mangled Jump Obfuscation
Exception Jump Obfuscation
String Encryption
Polymorphic String Encryption
Constant Encryption
Method InliningSoonTM
Method Outlining
Initialisation Outlining
Annotation Encryption
Reference Encryption
Renaming Obfuscation
Return Obfuscation
Method Parameter Obfuscation
Native Driver Obfuscation
Crasher Obfuscation

Examples

Unobfuscated

public void exportLog() throws IOException {
    File output = new File("calculations.txt");

    try (BufferedWriter writer = new BufferedWriter(new FileWriter(output))) {
        logs.forEach(log - > {
            try {
                boolean shouldPrintNewLine = !log.contains("\n");

                if (shouldPrintNewLine)
                    writer.write("\n");

                writer.write(log);
            } catch (IOException e) {
                e.printStackTrace();
            }
        });

        writer.flush();
    }
}

Obfuscated

public void KK0oK0o$KK0oKOo$KK0oKK(int var1_1) throws IOException {
    /*
     * This method has failed to decompile.  When submitting a bug report, please provide this stack trace, and (if you hold appropriate legal rights) the relevant class file.
     * 
     * org.benf.cfr.reader.util.ConfusedCFRException: Extractable last case doesn't follow previous, and can't clone.
     *     at org.benf.cfr.reader.bytecode.analysis.opgraph.op3rewriters.SwitchReplacer.examineSwitchContiguity(SwitchReplacer.java:611)
     *     at org.benf.cfr.reader.bytecode.analysis.opgraph.op3rewriters.SwitchReplacer.replaceRawSwitches(SwitchReplacer.java:94)
     *     at org.benf.cfr.reader.bytecode.CodeAnalyser.getAnalysisInner(CodeAnalyser.java:517)
     *     at org.benf.cfr.reader.bytecode.CodeAnalyser.getAnalysisOrWrapFail(CodeAnalyser.java:278)
     *     at org.benf.cfr.reader.bytecode.CodeAnalyser.getAnalysis(CodeAnalyser.java:201)
     *     at org.benf.cfr.reader.entities.attributes.AttributeCode.analyse(AttributeCode.java:94)
     *     at org.benf.cfr.reader.entities.Method.analyse(Method.java:531)
     *     at org.benf.cfr.reader.entities.ClassFile.analyseMid(ClassFile.java:1055)
     *     at org.benf.cfr.reader.entities.ClassFile.analyseTop(ClassFile.java:942)
     *     at org.benf.cfr.reader.Driver.doClass(Driver.java:84)
     *     at org.benf.cfr.reader.CfrDriverImpl.analyse(CfrDriverImpl.java:78)
     */
    throw new IllegalStateException("Decompilation failed");
}

Samples

Don't believe us? Try it yourself! Here below are some samples providing examples of the security we bring.

Sample nameUnobfuscatedObfuscatedInfo
EvaluatorDownloadDownloadPrints out various debugging informations and unit tests

Credits

Libraries used

Inspired from