Skip to content

Commit c7e32e9

Browse files
authored
Merge pull request #68 from skidfuscatordev/terminalsin-patch-4
Update README.md
2 parents 3755e1a + 15ab09d commit c7e32e9

1 file changed

Lines changed: 41 additions & 20 deletions

File tree

README.md

Lines changed: 41 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
Skidfuscator: Obfuscation like never seen before.
77
</p>
88
<p align="center">
9-
<a><img alt="Server Version" src="https://github.com/terminalsin/skidfuscator-java-obfuscator/actions/workflows/maven.yml/badge.svg?branch=master"></a>
109
<a><img alt="Api Type" src="https://img.shields.io/badge/API-MapleIR-blue"></a>
1110
<a><img alt="Authors" src="https://img.shields.io/badge/Authors-Ghast-blue"></a>
1211
<a><img alt="Issues" src="https://img.shields.io/github/issues/terminalsin/skidfuscator-java-obfuscator"></a>
@@ -21,8 +20,20 @@
2120
</p>
2221

2322
---
23+
## 🚀 Quickstart
2424

25-
# 🕵️ What is Skidfuscator?
25+
> [!TIP]
26+
> You can download Skidfuscator [here](https://github.com/skidfuscatordev/skidfuscator-java-obfuscator/releases) and run it directly using:
27+
> ```
28+
> java -jar skidfuscator.jar obfuscate <path to your jar>
29+
> ```
30+
31+
Skidfuscator uses a config system, which allows you to customize your obfuscation. We try to automatically download all compatible libraries, but some may slip through the cracks. The Gradle plugin is a work in progress. For now, use:
32+
```
33+
java -jar skidfuscator.jar obfuscate <path to your jar> -li=<path to folder with all libs>
34+
```
35+
36+
## 🕵️ What is Skidfuscator?
2637
Skidfuscator is a proof of concept obfuscation tool designed to take advantage of SSA form to optimize and obfuscate Java bytecode
2738
code flow. This is done via intra-procedural passes each designed to mingle the code in a shape where neither the time complexity
2839
neither the space complexity suffers from a great loss. To achieve the such, we have modeled a couple of well known tricks to
@@ -54,6 +65,33 @@ not to be commercial but to inspire some more clever approaches to code flow obf
5465
5566
## Third Generation Flow
5667
68+
### Flow Obfuscation
69+
- [x] Bogus Exception Flow
70+
- [x] Bogus Condition Flow
71+
- [x] **NEW** ✨ Pure Function Hashing Flow
72+
- [x] Switch Flow
73+
- [x] Factory Initiation Flow (**Enterprise**)
74+
- [x] Integer Return Flow (**Enterprise**)
75+
- [x] Exception Return Flow (**Enterprise**)
76+
77+
### Encryption Obfuscation
78+
- [x] String Encryption
79+
- [x] Annotation Encryption (**Enterprise**)
80+
- [x] Reference Encryption (**Enterprise**)
81+
82+
### Structure Obfuscation
83+
- [x] Field Renamer (**Enterprise**)
84+
- [x] Method Renamer (**Enterprise**)
85+
- [x] Class Renamer (**Enterprise**)
86+
- [x] Mixin Support (**Enterprise**)
87+
- [x] Spigot Plugin Support (**Enterprise**)
88+
89+
### Miscelleanous
90+
- [x] Ahegao Trolling
91+
- [x] Driver Protection
92+
- [x] **Experimental** Outlining Obfuscation (**Enterprise**)
93+
- [x] Native Driver Protection (**Enterprise**)
94+
5795
What is third generation flow obfuscation? Well, contrary to Zelix's [second generation flow obfuscation](https://www.zelix.com/klassmaster/featuresFlowObfuscation.html), we use an even more complex system with private and public seeds. Here's
5896
how it works:
5997
@@ -69,24 +107,7 @@ how it works:
69107
70108
We currently are working on a variety of ways to approach this system using various lightweight obfuscation methods. Here are the current ones
71109
to date:
72-
Here are the features:
73-
74-
| Feature | Type | Description | Status |
75-
| --- | --- | --- | --- |
76-
| `Flow GEN3` | Flow (Community) | Obfuscates methods using the GEN3 Obfuscation methodology ||
77-
| `Bogus Jump` | Flow (Community) | Invalid jump to some random generated code to prevent skidding ||
78-
| `Bogus Exception`| Flow (Community) | Invalid jump to some random generated exception ||
79-
| `Mangled Jump` | Flow (**Enterprise**) | Mutation to the jump condition to make it appear more complex than it actually is ||
80-
| `Exception Jump` | Flow (**Enterprise**) | Changes done to flow semantics by forcing an exception then handling all the code in the catch clause ||
81-
| `Exception Return`| Flow (**Enterprise**) | Throw an exception with the value and catch it as opposed to returning it (Very heavy) ||
82-
| `Strong Opaque Predicate` | Flow (Community) | Use heredity and method invocation to pass a predicate as opposed to declaring it at the beginning of the CFG ||
83-
| `Method Inlining` | Flow (**Enterprise**) | Inline uncommon methods which aren't too big ||
84-
| `Method Outlining` | Flow (**Enterprise**) | Outline some non-sensitive blocks ||
85-
| `Loop Unrolling` | Flow (**Enterprise**) | Rewrite some loops instructions into continuous segments if the loop limit can be pre-determined ||
86-
| `Flattening` | Flow (Community) | Use a dispatcher method to harden the semantics of some block ranges (do not use entire method) | ⚠️ |
87-
| `String Encryption` | String | Encrypt the strings using the opaque predicate ||
88-
| `Reference Encryption` | Reference | Encrypt the reference calls using InvokeDynamic using the opaque predicate ||
89-
| `Reference Proxying` | Reference | Proxy references using a builder pattern OR dispatcher classes (mostly for initialisation) ||
110+
90111
# Credits
91112
92113
## Libraries used

0 commit comments

Comments
 (0)