See what Veil Obfuscator has to offer for enterprise and commercial Java archives.
| Standard Browser Studio | Veil Obfuscator includes a free local browser workbench on the Home page, allowing you to protect Java archives directly in your browser with zero configuration. |
|---|---|
| Cloud & CI/CD API | Unlocked accounts in the Client Area receive access to the dedicated Veil Cloud Pipeline and a personal API token for automated protection in GitHub Actions, GitLab CI, and Gradle workflows. |
| NameObfuscation | NameObfuscation is the foundational layer of bytecode protection. It renames packages, classes, methods, and fields to short, meaningless identifiers across the entire archive while preserving virtual method dispatch and inheritance hierarchies. |
| FlowObfuscation | FlowObfuscation rewrites method bytecode using opaque predicates and conditional branches without changing runtime behavior. When decompiled, the control flow graph differs significantly from the original source structure. |
| StringEncrypt | StringEncrypt replaces UTF-8 string constants in the constant pool with encrypted payloads and injects a randomized runtime decryption helper class. Strings are decoded only when referenced at runtime. |
| NumberObfuscation |
NumberObfuscation replaces integer and long constants in bytecode instructions
with arithmetic and bitwise calculations (XOR, addition, subtraction)
that evaluate to the original constant at runtime.
|
| ReflectGuard | ReflectGuard scans string constants across the archive and automatically preserves class and member names that are referenced by name, keeping reflection and resource lookups intact without manual exclusion lists. |
| InformationRemover |
InformationRemover strips SourceFile, SourceDebugExtension,
LineNumberTable, LocalVariableTable, and
LocalVariableTypeTable attributes from every class in the archive.
|
| TamperProtection | TamperProtection computes a 64-bit FNV-1a checksum across the protected class entries and injects a startup verification guard into the main entry point. If any class byte is modified after protection, the application terminates immediately. |
| ExpiryTime | ExpiryTime embeds a timestamp guard into the archive entry point, allowing you to specify an exact number of days until the application refuses to execute. |
| TrashClasses | TrashClasses generates and injects up to 500 realistic synthetic classes with valid methods and fields into the archive. They do not alter runtime execution but increase analysis noise for reverse engineers. |
| TrashLines |
TrashLines inserts dead bytecode sequences and stack-neutral arithmetic operations
inside existing methods while keeping JVM StackMapTable verification
frames valid.
|