Browse documentation
Documentation / Protection passes

Protection passes

Twelve independent passes, chained through the pipeline described in How it works. Each is verified against unmodified third-party JARs, a six-project open-source corpus plus an independent 1,208-class application, not only hand-built test fixtures.

  1. Nativization ImplementedMethod bodies translated to Rust, compiled, relinked through JNI.
  2. Class name obfuscation ImplementedEvery eligible class renamed into one flat, opaque package.
  3. Method & field renaming ConditionalPrivate always; non-private only within a fully closed hierarchy.
  4. String & constant encryption ConditionalEvery string literal in a method body, encrypted and decrypted at the call site.
  5. Control-flow flattening ConditionalBranches rewritten through a single dispatcher table.
  6. Decompiler-resistant wrapping ImplementedWhole-method exception wrapping with no behavioural change.
  7. Anti-tamper checksums ImplementedPer-class SHA-256 verified at load time, fails on a mismatch.
  8. Anti-debug detection ConditionalDetects a JDWP debug agent at JVM startup.
  9. Resource & asset encryption ConditionalBundled resources encrypted and decrypted at the call site.
  10. Native library bundling ImplementedThe compiled library obfuscated under a randomised per-build path.
  11. Loader & runtime hardening ImplementedRJNI's own bootstrap classes renamed per build, same as customer code.
  12. Build-time watermarking ImplementedA per-build identifier, recoverable without running the jar.