Reference

Transformers

Every transformer token, grouped by family, with the option that enables it.

Each protection is a transformer. Its token is the name used in exclusion rules and in @ExcludeTransformers through the Transformers constants. Its option is the key that turns it on in the configuration; when the two differ, both are given.

Pipeline order

Transformers run phase by phase, in a fixed order inside each phase:

PRE_RENAME → RENAME → PROTECT_EARLY → STRING → CONTROL_FLOW → STRUCTURE → DYNAMIC_LAST

PRE_RENAME holds only sensitiveVm, which virtualises the methods you list before anything is renamed.

Renaming

TokenOptionEffect
renamerenameClasses, fields and methods, in a configurable style (Alphabet, Invisible, IlIlIlIlIl), with optional package, class prefix and suffix, member prefix and random salt.

Control flow

TokenOptionEffect
controlFlowcontrolFlowObfuscationOpaque predicates, Light (cheap arithmetic) or Heavy (LDIV-based).
flattencontrolFlowFlatteningLoop-aware control-flow flattening: the method becomes a switch-dispatched state machine.
flowShufflecontrolFlowShufflingReorders basic blocks within methods.
gotoObfuscationgotoObfuscationReplaces GOTO with opaque conditional jumps across 13 IF_xxx variants.
cffStateMaskingcffStateMaskingXOR-masks the flattening state with ThreadLocalRandom at every dispatch.

Constants

TokenOptionEffect
constantconstantObfuscationPolymorphic number obfuscation, Light (arithmetic chain) or Flow (predicate branching).
numberSpecknumberSpeckInteger, long, float and double constants go through a per-class SPECK32/64 decryptor.
integerTableintegerTableBIPUSH, SIPUSH and ICONST_n become reads from a per-class static int[] table.
staticFieldInitstaticFieldInitStatic String and Integer constant values move to PUTSTATIC in the static initialiser.
comparisonObfuscationcomparisonObfuscationString.equals() becomes a hashCode comparison through a proxy, with a fallback on collisions.

Strings

TokenOptionEffect
stringstringEncryptModePool-sharded string encryption: several algorithms, optional per-call-site contextual key, AES-CTR with zlib shards, and an invokedynamic fallback that Java 8 accepts.
polyStringpolyStringPer-class XOR-chain polymorphic string decryptor.
jntPolyStringjntPolyStringPer-call-site XOR and key polymorphic string decryptor.

Indirection

TokenOptionEffect
referencereferenceObfuscationINVOKE* instructions become invokedynamic call sites resolved through a sharded, encrypted blob (AES-CTR with zlib, one IV per call site).
parameterPackingparameterPackingRepacks the parameters of private methods into long[], Object[] and float[] carriers, with a single-slot ThreadLocal pool to avoid allocations.
methodHandleIndirectionmethodHandleIndirectionOwned INVOKESTATIC calls go through a cached MethodHandle.invokeExact() held in a synthetic field.
invokeDispatcherinvokeDispatcherOwned static, virtual and interface calls go through a per-class TABLESWITCH dispatcher.
methodSaltmethodSaltAppends a dead int parameter to private method descriptors.
fieldProxyfieldProxyPrivate field reads and writes go through synthetic static proxy methods.
fieldDescriptorMutationfieldDescriptorMutationPrivate fields are declared as Object, with a CHECKCAST at every access.

Structure

TokenOptionEffect
ghostMembersghostMembersInjects synthetic phantom fields and methods to defeat structural fingerprinting. ghostMembersIntense uses a heavier profile.
blockBreakblockBreakInserts labels at control-flow boundaries to fragment decompiler output.
trapEdgetrapEdgeTurns GOTO into fake try/catch blocks for dead exception edges.
annotationConfuserannotationConfuserInjects phantom annotations on fields and method parameters.
accessaccessSets ACC_SYNTHETIC on classes and on fields not annotated @SerializedName, so Gson keeps working. Methods are left untouched.

Anti-tamper and integrity

TokenOptionEffect
antiTamperantiTamperDetects attached agents and debuggers at runtime and halts the JVM.
integrityintegrityCheckSelf-checksum guards: runtime CRC verification of class bytes.
crashercrasherInjects constructs that crash common decompilers (CFR, Procyon, Fernflower).
saltsaltPer-class salt masking.
sensitiveVmsensitiveVmVirtualises the methods listed in sensitiveVmMethods.

Strip and watermark

TokenOptionEffect
lineNumberslineNumbersStrips or randomises LineNumberTable attributes.
localVariableslocalVariablesStrips LocalVariableTable and LocalVariableTypeTable.
methodParametersmethodParametersStrips or obfuscates the runtime MethodParameters names.
innerClassesremoveInnerClassesRemoves the InnerClasses attribute.
sourceFileremoveSourceFileRemoves the SourceFile attribute.
watermarkwatermarkOptionsEmbeds a custom mark: dummy class, text constant, LDC/POP pair or ZIP comment.
shuffleshuffle, shuffleOptionsRandomises member order within classes, with one switch per shuffled list.

Encryption

TokenOptionEffect
magicCryptermagicCrypterReplaces CAFEBABE and encrypts every class with AES-128-CTR and zlib. Part of the hardened runtime.

Everything at once

The global token, or Transformers.GLOBAL, matches every transformer.