Gruntpocalypse is a jvm bytecode obfuscator written in kotlin with 30+ features.
This project aims for stability and versatility. Some ideas are from other obfuscators.
Join our Discord server and provide your suggestions: https://discord.gg/ysB2fMfeYW
100% passed JVM Obfuscation Test
If you encounter any compatibility issues, please raise an issue on GitHub to help us improve Grunt.
By the way, I appended the stability level on each feature. If you encountered unstable situation. You can turn off the low stability-level features.
Stability level: [1]=Unstable [5]=Stable
Controlflow requires ComputeMaxs disabled. Please ensure your included classes with full dependencies.
The dependencies of your project is highly required to ensure stability and intensity. If most of the project dependencies are unavailable for some reasons. I suggest you to enable useComputeMaxs in Global setting to ensure stability as much as possible. (If you encountered VerifyError, You should first try to complete the dependencies. It is recommended to only enable computeMaxs and disable controlflow obfuscation when most dependencies cannot be completed)
-
[5]ClassRename
-
[5]FieldRename
-
[5]MethodRename
-
[5]LocalVarRename
The method renamer support InterfaceOverlap, InvokeDynamic, and FunctionalInterface check.
InterfaceOverlap: A class extends/implements more than 2 class/interfaces with same method name and descriptor. ( Example: A implements B and C, B and C both are independent interface and have method invoke(I)J.)
- [4]MixinClassRename
- [4]MixinFieldRename
- [4]ArithmeticEncrypt
- [5]ConstPoolEncrypt
- [5]NumberEncrypt
- [5]StringEncrypt
- [4]MethodScramble
- [5]FieldScramble
- [5]StringEqualsRedirect
- [5]InvokeDynamic
- [5]SourceDebugRemove
- [5]EnumOptimization
- [5]DeadCodeRemove
- [5]KotlinOptimize
- [4]Shrinking
- [5]Crasher
- [5]Watermark
- [5]NativeCandidate
- [5]ShuffleMembers
- [5]TrashClass
- [5]ClonedClass
- [5]SyntheticBridge
- [5]HWIDAuthentication
- [5]PostProcess
- [4]BogusConditionJump (If, Goto) Generate fake jumps with random junk codes
- [4]MangledCompareJump (If, Goto) Generate random conditional jump with junk codes for direct jump
- [4]ReversedIfJump (If, Goto) Random mutation to the jump condition
- [4]TableSwitchJump (Switch) Generate TableSwitch to replace direct jumps
- [4]UnconditionalLoop (Switch) Random weird loops between switch labels
- [4]TrappedSwitchCase (Switch) Random trapped switch junk cases
- [4]JunkCodeGenerator (JunkCode) Generate junk calls
- [0] (Provide ur suggestion in Discord)
This is a free and open source software under GPLv3
The previous Grunt versions under MIT license (1.5.8 and before)