Skip to content

Commit

Permalink
JObf -> Superblaubeere
Browse files Browse the repository at this point in the history
  • Loading branch information
ThisTestUser committed Oct 4, 2020
1 parent a4df544 commit 271613a
Show file tree
Hide file tree
Showing 6 changed files with 20 additions and 15 deletions.
2 changes: 1 addition & 1 deletion commonerrors/AntiReleak.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
## InvokeDynamic Transformer
## InvokeDynamic Obfuscation
This transformer was made to be a universal decryptor for all antireleak invokedynamics. This will only reverse the invokedynamics so you can reverse engineer the plugin, not remove all traces of your user id!
2 changes: 1 addition & 1 deletion commonerrors/DashO.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
## String Encryption Transformer
## String Encryption
If you get an error relating to SourceResult, it is because DashO's flow obfuscation was applied, which messes with the string decryptor. Run dasho.FlowObfuscationTransformer first, and you will able to decrypt all the strings.
2 changes: 1 addition & 1 deletion commonerrors/Stringer.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
## HideAccessObfuscation Transformer
## HideAccess Obfuscation
If you see an error while running the transformer, it means that you did not remove the string encryption. Run stringer.StringEncryptionTransformer first and you will be able decrypt Stringer's hide access. Note that you need to add all libraries that are used by the JAR, otherwise you will not be able to decrypt the file!
4 changes: 2 additions & 2 deletions commonerrors/JObf.md → commonerrors/Superblaubeere.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
## JObfTransformer (superblaubeere27's obfuscator)
One issue with this obfuscator is that it may inject local variables into the code, which prevents the file from being completely deobfuscated. In that case, use general.LocalVariableRemover, write to file, and then run the deobfuscator on the output. If you are still having issues with some features not being deobfuscated, use DeadCodeRemover and then RedundantGotoRemover to get rid of the junk code that may be in the way. Note that there are some settings which you cannot configure in this transformer without forking this project.
## Superblaubeere27's Obfuscator
One issue with this obfuscator is that it may inject local variables into the code, which prevents the file from being completely deobfuscated. In that case, use general.LocalVariableRemover, write to file, and then run the deobfuscator on the output. If you are still having issues with some features not being deobfuscated, use DeadCodeRemover and then RedundantGotoRemover to get rid of the junk code that may be in the way.
5 changes: 5 additions & 0 deletions commonerrors/Zelix.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
## String Encryption
The string encryption transformer supports ZKM 5-8. If the file was obfuscated using ZKM 9 and up, the strings will only be decrypted if the file lacks method parameter changes.

## Reference Obfuscation
The reference obfuscation transformer supports both the non-invokedynamic and invokedynamic variants of the obfuscation, but only if method parameter changes aren't enabled. Note that you must use the string encryption transformer first if the decryptor methods are in a seperate class (or just always use string encryption transformer before this).
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
import com.javadeobfuscator.deobfuscator.transformers.Transformer;
import com.javadeobfuscator.deobfuscator.utils.Utils;

public class JObfTransformer extends Transformer<TransformerConfig>
public class SuperblaubeereTransformer extends Transformer<TransformerConfig>
{
public static boolean FAST_INDY = true;
public static boolean CLASS_ENCRYPTION = false;
Expand Down Expand Up @@ -96,7 +96,7 @@ public boolean canCheckEquality(JavaValue first, JavaValue second,
}
});

System.out.println("[Special] [JObfTransformer] Starting");
System.out.println("[Special] [SuperblaubeereTransformer] Starting");
AtomicInteger num = new AtomicInteger();
AtomicInteger unpoolNum = new AtomicInteger();
AtomicInteger unpoolString = new AtomicInteger();
Expand Down Expand Up @@ -565,7 +565,7 @@ else if(ain.getOpcode() == Opcodes.GETSTATIC && ((FieldInsnNode)ain).name.equals
}
}
AtomicInteger decrypted = new AtomicInteger();
//Warning: No checks will be done to verify if classloader is from JObf
//Warning: No checks will be done to verify if classloader is from Superblaubeere obf
if(CLASS_ENCRYPTION)
{
String[] lines = null;
Expand Down Expand Up @@ -638,14 +638,14 @@ else if(ain.getOpcode() == Opcodes.GETSTATIC && ((FieldInsnNode)ain).name.equals
}
}
}
System.out.println("[Special] [JObfTransformer] Removed " + num + " number obfuscation instructions");
System.out.println("[Special] [JObfTransformer] Inlined " + unpoolNum + " numbers");
System.out.println("[Special] [JObfTransformer] Unpooled " + unpoolString + " strings");
System.out.println("[Special] [JObfTransformer] Inlined " + inlinedIfs + " if statements");
System.out.println("[Special] [JObfTransformer] Removed " + indy + " invokedynamics");
System.out.println("[Special] [SuperblaubeereTransformer] Removed " + num + " number obfuscation instructions");
System.out.println("[Special] [SuperblaubeereTransformer] Inlined " + unpoolNum + " numbers");
System.out.println("[Special] [SuperblaubeereTransformer] Unpooled " + unpoolString + " strings");
System.out.println("[Special] [SuperblaubeereTransformer] Inlined " + inlinedIfs + " if statements");
System.out.println("[Special] [SuperblaubeereTransformer] Removed " + indy + " invokedynamics");
if(CLASS_ENCRYPTION)
System.out.println("[Special] [JObfTransformer] Decrypted " + decrypted + " classes");
System.out.println("[Special] [JObfTransformer] Done");
System.out.println("[Special] [SuperblaubeereTransformer] Decrypted " + decrypted + " classes");
System.out.println("[Special] [SuperblaubeereTransformer] Done");
return num.get() > 0 || unpoolNum.get() > 0 || unpoolString.get() > 0 || inlinedIfs.get() > 0 || indy.get() > 0;
}

Expand Down

0 comments on commit 271613a

Please sign in to comment.