Skip to content

SpartanB312/Grunt

Repository files navigation

Gruntpocalypse

CodeFactor

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

Compatibility

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

Notice

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)

Features

Renamer

  • [5] ClassRename

  • [5] FieldRename

  • [5] MethodRename

  • [5] LocalVarRename

  • [3] ReflectionSupport

    The method renamer supports 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.)

Minecraft

  • [4] MixinClassRename
  • [4] MixinFieldRename
  • [4] MixinMethodRename

Encrypt

  • [4] ArithmeticEncrypt
  • [5] ConstPoolEncrypt
  • [5] NumberEncrypt
  • [5] StringEncrypt

Redirect

  • [4] MethodScramble
  • [5] FieldScramble
  • [5] StringEqualsRedirect
  • [5] InvokeDynamic

Optimization

  • [5] SourceDebugRemove
  • [5] EnumOptimization
  • [5] DeadCodeRemove
  • [5] KotlinOptimize
  • [4] Shrinking

Miscellaneous

  • [5] AntiDebug
  • [5] Crasher
  • [5] Watermark
  • [5] NativeCandidate
  • [5] ShuffleMembers
  • [5] TrashClass
  • [5] ClonedClass
  • [5] SyntheticBridge
  • [5] HWIDAuthentication
  • [5] PostProcess
  • [5] DeclareFields

Plugins

  • [3] NoverifyHackery (Misc) Force noverify and hackery bytecodes (reference)
  • [4] RemoteLoader (Misc) Remote authentication and constant class loading services
  • [2] VersionPatcher (Misc) Downgrade the class version from java6 to java5 for Windows 98

ControlFlow

General

  • [5] RandomArithmeticExpr (Seed) Hide the seed operations to anti-simulation
  • [4] BogusConditionJump (If, Goto) Generate fake jumps with random junk codes
  • [4] MangledCompareJump (If, Goto) Generate conditional jump with junk codes to replace direct jump
  • [5] ReversedIfJump (If, Goto) Random mutation to the jump condition
  • [4] ParallelBranch (If, Goto) Generate junk parallel branch to prevent inference from returns
  • [4] TableSwitchJump (Switch) Generate TableSwitch to replace direct jumps
  • [4] TrappedSwitchCase (Switch) Random trapped jumps or weird loops between switch cases
  • [4] JunkCodeGenerator (JunkCode) Generate junk calls
  • [5] SwitchExtractor (Switch) Replace switches with blocks

Miscellaneous

  • [4] ConstantBuilder (If, Switch) Using controlflow to build constants
  • [4] SwitchProtector (Switch) Hide the real keys of switch

License: GNU General Public License 3.0

This is a free and open source software, licensed under GPLv3.

The previous Grunt versions are licensed under the MIT license (1.5.8 and before).

Stargazers over time

Stargazers over time