### Unobfuscated Java Code Example Source: https://skidfuscator.dev/docs/config/flowoutliner.html Example of a simple Java method before outliner transformation. ```java public static void main(String[] args) { int number = callNumber(); /*[...]*/ } static int callNumber() { return 1; } ``` -------------------------------- ### Unobfuscated Main Method Example Source: https://skidfuscator.dev/docs/config/flowexception.html A basic example of a main method before flow exception obfuscation is applied. This serves as a baseline for comparison. ```java public static void main(String[] args) { int number = callNumber(); /*[...]*/ } /*[...]*/ ``` -------------------------------- ### Obfuscated Main Method Example Source: https://skidfuscator.dev/docs/config/flowexception.html An example of a main method after flow exception obfuscation. Note the inserted while loop with conditional breaks and a throw statement, altering the control flow. ```java public static void main(String[] args) { /*[...]*/ while (true) { if (n ^ 0x8AF8EF8F == 0xA88FFA) { break; } n = n ^ 0x28847D; int number = callNumber(); if (n ^ 0xAA9F8FFD == 0x989F7AF) { break; } throw new IllegalStateException(); } /*[...]*/ } /*[...]*/ ``` -------------------------------- ### Unobfuscated String Example Source: https://skidfuscator.dev/docs/config/stringencryption.html This is a standard, unobfuscated string output. ```java System.out.println("Hello world"); ``` -------------------------------- ### Configuring Libraries for Classpath Source: https://skidfuscator.dev/docs/config This Java code snippet demonstrates how to retrieve a list of libraries from the configuration. The example shows valid Java path formats. ```java public File[] getLibs() { return this.getStringList("libraries", Collections.emptyList()) .stream() .map(File::new) .distinct() .toArray(File[]::new); } ``` ```plaintext C:\test.jar test.jar ./test.jar /Home/test.jar ``` ```hocon libraries [ "C:\\test.jar", "test.jar", "./test.jar", "/Home/test.jar" ] ``` -------------------------------- ### Obfuscated Java Code Example with Outliner Source: https://skidfuscator.dev/docs/config/flowoutliner.html Example of the same Java code after outliner transformation, where 'callNumber' is extracted into a separate step. ```java public static void main(String[] args) { step1_AF8FZE8EF7Z89F(); /*[...]*/ } static void step1_AF8FZE8EF7Z89F() { int number = callNumber(); } static int callNumber() { return 1; } ``` -------------------------------- ### Unobfuscated Method Example Source: https://skidfuscator.dev/docs/config/exceptionreturn.html This is a standard method implementation before exception return obfuscation is applied. It demonstrates a typical integer return value. ```java int number = callNumber(); [...] } int callNumber() { return 1; } ``` -------------------------------- ### Unobfuscated Java Code Example Source: https://skidfuscator.dev/docs/config/flowcondition.html Example of a simple Java main method with an if statement checking a number. ```java public static void main(String[] args) { int number = callNumber(); if (number == 1) { System.out.println("Hello world"); } /*[...]*/ } /*[...]*/ ``` -------------------------------- ### Unobfuscated Switch Statement Example Source: https://skidfuscator.dev/docs/config/flowswitch.html An example of a standard Java switch statement before obfuscation. This serves as a baseline for comparison with the obfuscated version. ```java public static void main(String[] args) { int number = callNumber(); switch (number) { case 1: System.out.println("Oh no!"); break; case 2: System.out.println("Hello world!"); break default: throw new IllegalStateException("Something went wrong!"); } /*[...]*/ } /*[...]*/ ``` -------------------------------- ### Obfuscated Java Code Example with Flow Condition Source: https://skidfuscator.dev/docs/config/flowcondition.html Example of obfuscated Java code demonstrating the Flow Condition transformer. It uses a loop and bitwise operations to add complexity to the conditional check. ```java public static void main(String[] args) { /*[...]*/ label1: { while (true) { if (n ^ 0x8AF8EF8F == 0xA88FFA) { break; } n = n ^ 0x28847D; int number = callNumber(); label2: { if (number != 1) break label1; if (n ^ 0xAA9F8FFD != 0x989F7AF) break label2; System.out.println("Hello world"); break label1; } throw new IllegalStateException(); } } /*[...]*/ } /*[...]*/ ``` -------------------------------- ### Unobfuscated Java Code Source: https://skidfuscator.dev/docs/config/flowrange.html A simple Java example demonstrating basic variable declaration and printing to the console. ```java final String uwu = "UwU"; System.out.println(uwu); ``` -------------------------------- ### Obfuscated Method Example Source: https://skidfuscator.dev/docs/config/exceptionreturn.html This demonstrates how a method is transformed after exception return obfuscation. The original return value is now handled via an exception, and the method signature changes to void. ```java try { callNumber(); } catch (IntNumberException ex) { int number = ex.getValue(); } [...] void callNumber() { throw new IntNumberException(1); } ``` -------------------------------- ### Unobfuscated Java Method Example Source: https://skidfuscator.dev/docs/config/renamermethod.html Example of unobfuscated Java code showing a main method calling a callNumber method. ```java public static void main(String[] args) { int number = callNumber(); /*[...]*/ } static int callNumber() { return 1; } ``` -------------------------------- ### Unobfuscated Annotation Example Source: https://skidfuscator.dev/docs/config/annotationencryption.html Demonstrates a Java class with an annotation containing a secret string and an integer before encryption. ```java @SecretAnnotation(secret = "Super secret", secret2 = 1337) public class Fancy { public String getSecret() { return this.getClass().getAnnotation(SecretAnnotation.class).secret(); } public int getSecre2t() { return this.getClass().getAnnotation(SecretAnnotation.class).secret2(); } } ``` -------------------------------- ### Obfuscated Java Method Example Source: https://skidfuscator.dev/docs/config/renamermethod.html Example of obfuscated Java code where the callNumber method has been renamed. ```java public static void main(String[] args) { int number = o0k0k0Kk(); /*[...]*/ } static int o0k0k0Kk() { return 1; } ``` -------------------------------- ### Skidfuscator: Match Class Prefix Source: https://skidfuscator.dev/docs/exclusion.html Excludes any class whose name starts with 'com/apache'. Note the escaped forward slashes. ```skidfuscator class{^com\/apache} ``` -------------------------------- ### Obfuscated Annotation Example Source: https://skidfuscator.dev/docs/config/annotationencryption.html Shows the same Java class after annotation encryption, where the secret string and integer are transformed into obfuscated values and method calls. ```java @SecretAnnotation(secret = "oifjaioejaifjea9è!efèaefFEf==", secret2 = 0x9FE7FE7F) public class Fancy { public String getSecret() { /* [...] */ return this.aofheoafo(this.getClass().getAnnotation(SecretAnnotation.class).secret(), n ^ 0x997AF8F); } public int getSecre2t() { /* [...] */ return this.getClass().getAnnotation(SecretAnnotation.class).secret2() ^ n ^ 0x90AF9F7; } /* [...] */ } ``` -------------------------------- ### Unobfuscated Integer Example Source: https://skidfuscator.dev/docs/config/numberencryption.html This snippet shows a standard Java integer declaration and its usage in a print statement. This serves as a baseline for comparison with the obfuscated version. ```java int var = 1000; System.out.println(var + 1 + 2 + 3); ``` -------------------------------- ### Skidfuscator: Match Another Class Prefix Source: https://skidfuscator.dev/docs/exclusion.html Excludes any class whose name starts with 'com/google'. Note the escaped forward slashes. ```skidfuscator class{^com\/google} ``` -------------------------------- ### Standard String Encryption Source: https://skidfuscator.dev/docs/config/stringencryption.html Example of a string encrypted using the STANDARD method. It uses a predefined method call with encoded characters and a calculated XOR value. ```java System.out.println(superDuperMethod("\u2be6\uabec\uebfe\uebfe\uabe0\uabf7\ue7f1", n ^ 0x9F878R)); ``` -------------------------------- ### Obfuscated Integer Example Source: https://skidfuscator.dev/docs/config/numberencryption.html This snippet demonstrates how the number encryption transformer modifies integer declarations and their usage. Notice the use of XOR operations with a 'seed' or 'predicate' value. ```java int var = 0xA0290233 ^ n; System.out.println(var + 0x92083838 ^ n + 0x92083839 ^ n + 0x92083840 ^ n); ``` -------------------------------- ### Obfuscated Switch Statement Example Source: https://skidfuscator.dev/docs/config/flowswitch.html The same Java switch statement after being processed by the Flow Switch transformer. Notice the altered case values and the XORed switch condition, incorporating a hashing mechanism. ```java public static void main(String[] args) { /*[...]*/ int number = callNumber(); switch (number ^ hash(n ^ 0x9932783)) { case 0x928EF8C: System.out.println("Hello world!"); break case 0x9873783: System.out.println("Oh no!"); break; default: throw new IllegalStateException("Something went wrong!"); } /*[...]*/ } /*[...]*/ ``` -------------------------------- ### Specify Runtime Path Source: https://skidfuscator.dev/docs/gettingstarted.html Provide the path to your Java runtime environment. ```bash --runtime= ``` -------------------------------- ### Skidfuscator: Include Package Source: https://skidfuscator.dev/docs/exclusion.html Includes only classes within the 'com.example' package. Uses a negative lookahead. ```skidfuscator class{^(?!com\/example).*$} ``` -------------------------------- ### Run Skidfuscator Source: https://skidfuscator.dev/docs/gettingstarted.html Execute Skidfuscator from the command line. Familiarity with the Java CLI is recommended. ```bash java -jar ``` -------------------------------- ### Run Maven package task Source: https://skidfuscator.dev/docs/libraries.html Execute the Maven package command to build the project and run the configured dependency copy task. ```bash mvn package ``` -------------------------------- ### Run skidfuscator with libraries Source: https://skidfuscator.dev/docs/libraries.html Execute the skidfuscator JAR file, specifying the path to the libraries folder using the -li argument. ```bash java -jar obfuscator-1.0.0-SNAPSHOT.jar -li=libs obfuscate FluffyClicker.jar ``` -------------------------------- ### Specify Libraries Folder Source: https://skidfuscator.dev/docs/gettingstarted.html Provide the path to the folder containing libraries or dependencies required for obfuscation. ```bash --libs= ``` -------------------------------- ### Specify Input Jar Source: https://skidfuscator.dev/docs/gettingstarted.html Provide the path to the JAR file you wish to obfuscate. ```bash ``` -------------------------------- ### Run Skidfuscator with JAR Source: https://skidfuscator.dev/docs/installation.html Use the -jar parameter to run Skidfuscator from the command line. This is the recommended method for obfuscation. ```bash java -jar skidfuscator.jar ``` -------------------------------- ### Exemplar Exclusions: Minecraft Server Package Source: https://skidfuscator.dev/docs/exclusion.html Excludes the entire 'net.minecraft.server' package. ```skidfuscator class{^net\/minecraft\/server} ``` -------------------------------- ### Exemplar Exclusions: Minecraft Client Package Source: https://skidfuscator.dev/docs/exclusion.html Excludes the entire 'net.minecraft.client' package. ```skidfuscator class{^net\/minecraft\/client} ``` -------------------------------- ### Exemplar Exclusions: Mojang Package Source: https://skidfuscator.dev/docs/exclusion.html Excludes the entire 'com.mojang' package. ```skidfuscator class{^com\/mojang} ``` -------------------------------- ### Exemplar Exclusions: Apache Commons Package Source: https://skidfuscator.dev/docs/exclusion.html Excludes the entire 'org.apache.commons' package. ```skidfuscator class{^org\/apache\/commons} ``` -------------------------------- ### Run Gradle copy dependencies task Source: https://skidfuscator.dev/docs/libraries.html Execute the Gradle wrapper to run the 'copyDeps' task, which copies project dependencies to the 'libs' folder. ```bash gradlew copyDeps ``` -------------------------------- ### Enable Phantom Computation Source: https://skidfuscator.dev/docs/gettingstarted.html Enable phantom computation for classes. Support may be limited; providing necessary libraries is advised. ```bash --phantom ``` -------------------------------- ### Specify Output Path Source: https://skidfuscator.dev/docs/gettingstarted.html Define the path for the output obfuscated JAR file. If omitted, it will be saved in the current directory. ```bash --output= ``` -------------------------------- ### Default Configuration Structure Source: https://skidfuscator.dev/docs/config This is the default configuration structure. It supports Java Properties, JSON, and HOCON formats, with HOCON recommended for ease of use. ```hocon exempt: [] libs: [] stringEncryption { type: STANDARD enabled: true exempt: [] } numberEncryption { enabled: true exempt: [] } intAnnotationEncryption { enabled: true exempt: [] } stringAnnotationEncryption { enabled: true exempt: [] } exceptionReturn { enabled: true exempt: [] } flowCondition { enabled: true exempt: [] } flowException { enabled: true strength: AGGRESSIVE exempt: [] } flowRange { enabled: true exempt: [] } flowFactoryMaker { enabled: true exempt: [] } flowSwitch { enabled: true exempt: [] } outliner { enabled: true exempt: [] } ahegao { enabled: true exempt: [] } native: { enabled: false exempt: [] } driver: { enabled: false } reference { enabled: false } fileCrasher: { enabled: false } classRenamer { enabled: false type: CUSTOM prefix: "skido/" chars: [ "K" "oO", "o0" ] depth: 3 } methodRenamer { enabled: false type: CUSTOM chars: [ "K" "oO", "o0" ] depth: 3 } fieldRenamer { enabled: false type: ALPHABETICAL } ``` -------------------------------- ### Exception Return Configuration Source: https://skidfuscator.dev/docs/config/exceptionreturn.html Configure the exception return obfuscation feature. It is disabled by default and can be enabled by setting 'enabled' to true. The 'exempt' array can be used to specify methods or classes that should not be obfuscated. ```config exceptionReturn { enabled: false exempt: [] } ``` -------------------------------- ### Copy dependencies with Gradle Kotlin Source: https://skidfuscator.dev/docs/libraries.html Add this task to your build.gradle.kts file to copy project dependencies into a 'libs' folder. This task is run using the Gradle wrapper. ```gradle tasks.register("copyDeps") { from(configurations.compile) into("libs") } ``` -------------------------------- ### Skidfuscator: Include Multiple Packages Source: https://skidfuscator.dev/docs/exclusion.html Includes only classes within 'com.example' or 'com.eclipse' packages. Uses a negative lookahead with the OR operator. ```skidfuscator class{^(?!com\/example)|(com\/eclipse)).*$} ``` -------------------------------- ### Exemplar Exclusions: Bukkit Package Source: https://skidfuscator.dev/docs/exclusion.html Excludes the entire 'org.bukkit' package. ```skidfuscator class{^org\/bukkit} ``` -------------------------------- ### Exemplar Exclusions: Sk89q Package Source: https://skidfuscator.dev/docs/exclusion.html Excludes the entire 'com.sk89q' package. ```skidfuscator class{^com\/sk89q} ``` -------------------------------- ### Exemplar Exclusions: Minecraft Client Methods Source: https://skidfuscator.dev/docs/exclusion.html Excludes all methods within the 'net.minecraft.client' package. ```skidfuscator method{^net\.minecraft\.client} ``` -------------------------------- ### Skidfuscator: Match Method Name Source: https://skidfuscator.dev/docs/exclusion.html Excludes any method with the exact name 'main'. ```skidfuscator method{main} ``` -------------------------------- ### Exemplar Exclusions: Minecraft Util Methods Source: https://skidfuscator.dev/docs/exclusion.html Excludes all methods within the 'net.minecraft.util' package. ```skidfuscator method{^net\.minecraft\.util} ``` -------------------------------- ### Specify Exclusions File Source: https://skidfuscator.dev/docs/gettingstarted.html Provide the path to a file containing exclusions for the obfuscation process. ```bash --exempt= ``` -------------------------------- ### Copy dependencies with Gradle Groovy Source: https://skidfuscator.dev/docs/libraries.html Add this task to your build.gradle file to copy project dependencies into a 'libs' folder. This task is run using the Gradle wrapper. ```gradle task copyDeps(type: Copy) { from configurations.compile into 'libs' } ``` -------------------------------- ### Basic Regex: Match Everything Source: https://skidfuscator.dev/docs/exclusion.html This regex pattern matches any sequence of characters. ```regex (.*?) ``` -------------------------------- ### Exemplar Exclusions: JLine Package Source: https://skidfuscator.dev/docs/exclusion.html Excludes the entire 'org.jline' package. ```skidfuscator class{^org\/jline} ``` -------------------------------- ### Exemplar Exclusions: JohnyMuffin Package Source: https://skidfuscator.dev/docs/exclusion.html Excludes the entire 'me.johnymuffin' package. ```skidfuscator class{^me\/johnymuffin} ``` -------------------------------- ### Exemplar Exclusions: Minecraft Class Methods Source: https://skidfuscator.dev/docs/exclusion.html Excludes all methods within the 'net.minecraft.client.Minecraft' class. ```skidfuscator method{^net\.minecraft\.client\.Minecraft} ``` -------------------------------- ### Configure Maven dependency copy plugin Source: https://skidfuscator.dev/docs/libraries.html Add this configuration to your pom.xml to use the maven-dependency-plugin. It is configured to copy dependencies to a 'libs' directory within the project's build output. ```xml maven-dependency-plugin copy-dependencies package copy-dependencies ${project.build.directory}/libs ``` -------------------------------- ### Enable Flow Range Obfuscation Source: https://skidfuscator.dev/docs/config/flowrange.html Configuration to enable the flow range obfuscation pass. The 'exempt' list can be used to specify elements that should not be obfuscated. ```config flowRange { enabled: true exempt: [] } ``` -------------------------------- ### Exemplar Exclusions: SpigotMC Package Source: https://skidfuscator.dev/docs/exclusion.html Excludes the entire 'org.spigotmc' package. ```skidfuscator class{^org\/spigotmc} ``` -------------------------------- ### Basic Regex: Match String Beginning Source: https://skidfuscator.dev/docs/exclusion.html This regex pattern matches any string that begins with 'uwu'. ```regex ^uwu ``` -------------------------------- ### Exemplar Exclusions: Minecraft Forge Package Source: https://skidfuscator.dev/docs/exclusion.html Excludes the entire 'net.minecraftforge' package. ```skidfuscator class{^net\/minecraftforge} ``` -------------------------------- ### Method Renamer Configuration Source: https://skidfuscator.dev/docs/config/renamermethod.html Configure the method renamer with options for enabling, type (CUSTOM or ALPHABETICAL), characters to use, and depth. ```json methodRenamer { enabled: false type: CUSTOM // or 'ALPHABETICAL' chars: [ "K" "oO", "o0" ] depth: 3 } ``` -------------------------------- ### Enable Driver Hardening Source: https://skidfuscator.dev/docs/config/driverhardening.html To enable driver hardening, toggle the 'enabled' boolean to 'true' within the 'driver' configuration block. This feature is disabled by default. ```yaml driver: { enabled: false // Disabled by default } ``` -------------------------------- ### Skip Computation Source: https://skidfuscator.dev/docs/gettingstarted.html Use this option with caution to skip critical computation forms like libraries. Support may be limited. ```bash --fuckit ``` -------------------------------- ### String Encryption XOR Algorithm Source: https://skidfuscator.dev/docs/transformers.html Illustrates the core logic for character encryption/decryption using a XOR-based algorithm with an opaque predicate and a key array. The formula f_y(x) = x \oplus y \oplus n is used, where y is derived from the character's index modulo the key array size, and n is the opaque predicate. ```java y = i mod m ``` ```java f_y(x) = x \oplus y \oplus n ``` ```java f_y(f_y(x)) = x ``` -------------------------------- ### Outliner Configuration Source: https://skidfuscator.dev/docs/config/flowoutliner.html Configuration block to enable or disable the outliner transformer and specify methods to exempt. ```config outliner { enabled: true exempt: [] } ``` -------------------------------- ### IR Representation Comparison Source: https://skidfuscator.dev/docs/config/flowrange.html Visual comparison of the original and obfuscated control flow in Intermediate Representation (IR). The obfuscated flow shows the introduction of random statements and exception handling. ```text Original flow: Obfuscated Flow: ┌─────────┐ ┌─────────┐ │ Block A │ │ Block A │ └────┬────┘ └────┬────┘ │ │ ┌────▼────┐ ┌───────▼────────┐ │ Block B │ │ Random If Stmt │ └─────────┘ └───────┬────────┘ │ ┌─────┐◄──┴───►┌─────┐ │ Yes │ │ No │ └─────┘ └──┬──┘ │ ┌─────▼─────┐ │ Exception │ └───────────┘ ┌─────────────┐ │ Exception │ │ Catcher │ └──────┬──────┘ │ ┌────▼────┐ │ Block B │ └─────────┘ ``` -------------------------------- ### Skidfuscator: Multiple Exclusions Source: https://skidfuscator.dev/docs/exclusion.html Demonstrates excluding multiple classes by placing each exclusion on a new line. ```skidfuscator class{^com\/apache} // Matches apache class{^com\/google} // Matches google ``` -------------------------------- ### Annotation Encryption Configuration Source: https://skidfuscator.dev/docs/config/annotationencryption.html Enable or disable string and integer annotation encryption and specify any values to be exempted from encryption. ```hcl stringAnnotationEncryption { enabled: true exempt: [] } intAnnotationEncryption { enabled: true exempt: [] } ``` -------------------------------- ### String Encryption Configuration Source: https://skidfuscator.dev/docs/config/stringencryption.html Configure string encryption with enabled status, type (STANDARD or POLYMORPHIC), and an exemption list. ```yaml stringEncryption { enabled: true type: POLYMORPHIC exempt: [] } ``` -------------------------------- ### Allocate More Memory to Skidfuscator Source: https://skidfuscator.dev/docs/installation.html Increase the JVM's maximum memory allocation using the -Xmx parameter to improve performance, especially for larger projects. Ensure the allocated memory does not exceed physical availability. ```bash java -Xmx4G -jar skidfuscator.jar ``` -------------------------------- ### Polymorphic String Encryption Source: https://skidfuscator.dev/docs/config/stringencryption.html Demonstrates string encryption using the POLYMORPHIC mode. It involves a StringBuilder and a loop to transform characters based on a series of bitwise operations and XOR with a key 'n'. ```java StringBuilder string = new StringBuilder("\u2be6\uabec\uebfe\uebfe\uabe0\uabf7\ue7f1\uabe0\u6bfa\uebfe\uabee\uabf5"); for (int a=0, b, c; a < string.length(); a++) { b = string.charAt(a); b = (((b & 0xffff) << 0x6) | (b >> 0xa)) & 0xffff; c = ((b >> 0x0) ^ (b >> 0x7)) & ((1 << 0x4) - 1); b ^= (c << 0x0) | (c << 0x7); b ^= 0x600f ^ n; b -= 0x2aa2 ^ n; b += 0x25b0 ^ n; b ^= 0x9852 ^ n; string.setCharAt(a, (char) b); } System.out.println(string) ``` -------------------------------- ### Flow Switch Configuration Source: https://skidfuscator.dev/docs/config/flowswitch.html Configuration for the flow switch transformer. Set 'enabled' to true to activate it. 'exempt' can be used to specify cases or targets to exclude from obfuscation. ```json flowSwitch { enabled: true exempt: [] } ``` -------------------------------- ### Excluding a Method with Regex Source: https://skidfuscator.dev/docs/config To exclude a specific method, use the 'method' regex exemption. Ensure backslashes are doubled when including this in the configuration string. ```regex method{^myMethod} ``` ```hocon exempt: [ "method{^myMethod}" ] ``` -------------------------------- ### Skidfuscator: Match Specific Class Source: https://skidfuscator.dev/docs/exclusion.html Excludes any method within the specific class 'com.example.MyClass'. Note the escaped forward slashes. ```skidfuscator class{^com\/example\/MyClass$} ``` -------------------------------- ### Number Encryption Configuration Source: https://skidfuscator.dev/docs/config/numberencryption.html This is the configuration block for enabling number encryption. Ensure 'enabled' is set to true to activate the transformer. The 'exempt' list can be used to specify numbers or patterns to exclude from encryption. ```yaml numberEncryption { enabled: true exempt: [] } ``` -------------------------------- ### Flow Condition Configuration Source: https://skidfuscator.dev/docs/config/flowcondition.html Configuration for enabling the Flow Condition transformer and specifying any exempt elements. ```yaml flowCondition { enabled: true exempt: [] } ``` -------------------------------- ### Configure Flow Exception Transformer Source: https://skidfuscator.dev/docs/config/flowexception.html Configuration block for the flow exception obfuscation transformer. Set 'enabled' to true to activate, 'strength' to 'WEAK', 'GOOD', or 'AGGRESSIVE' to control obfuscation intensity, and 'exempt' to specify methods or classes to exclude. ```java flowException { enabled: true strength: AGGRESSIVE // Can be 'WEAK', 'GOOD' or 'AGGRESSIVE' exempt: [] } ``` -------------------------------- ### Excluding a Class with Regex Source: https://skidfuscator.dev/docs/config To exclude a specific class, use the 'class' regex exemption. Remember to double backslashes when passing this as a string in the configuration. ```regex class{^my/class} ``` ```hocon exempt: [ "class{^my\/class}" ] ``` -------------------------------- ### Skidfuscator: Match Exact Class Source: https://skidfuscator.dev/docs/exclusion.html Excludes any method within the class named 'Controller'. ```skidfuscator class{Controller$} ``` -------------------------------- ### Obfuscated Java Code with Flow Range Source: https://skidfuscator.dev/docs/config/flowrange.html The same Java code after applying flow range obfuscation. It introduces a complex loop with a try-catch block and conditional exception throwing to obscure the original control flow. ```java final String uwu = "UwU"; while (true) { label1: { try { if (this.a(0x92A8B44, n) >> 8 != 0x97F7F) throw new IllegalReflectiveException(); break label1; } catch (IllegalReflectiveException ex) { System.out.println(uwu); } } } ``` -------------------------------- ### Excluding a Method in a Specific Class Source: https://skidfuscator.dev/docs/config To exclude a method within a specific class, chain the 'class' and 'method' exemptions on a single line. Double backslashes are required for the config string. ```regex class{^my/class} method{^myMethod} ``` ```hocon exempt: [ "class{^my\/class} method{^myMethod}" ] ``` -------------------------------- ### Basic Regex: Match Specific String Source: https://skidfuscator.dev/docs/exclusion.html This regex pattern matches any string that contains the substring 'roar'. ```regex roar ``` -------------------------------- ### Opt Out of Analytics Source: https://skidfuscator.dev/docs/gettingstarted.html Disable the collection of analytics, such as errors and usage statistics. ```bash --notrack ``` -------------------------------- ### Disabling Driver Feature Source: https://skidfuscator.dev/docs/config To disable the driver feature, which is reserved for premium users and decreases obfuscation strength, toggle the boolean value to false. ```hocon driver: false ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.