Getting started
Introduction
What flowguard does and how it's organized.
Flowguard takes a Java .jar file and rewrites its bytecode so the compiled code is much harder to read, decompile, or tamper with. You give it a jar, it gives you back a protected jar that runs the same way. It's built on top of ASM, a well-known Java bytecode library.
Two ways to use it
- Web UI — run flowguard with no arguments and it opens a settings page in your browser. This is the easiest way to configure a run, and it's the recommended starting point.
- Command line — a small CLI for scripting and automated builds. It always runs with the settings you last saved, so you set things up in the web UI once and reuse them from the CLI.
What protection actually does
Flowguard applies a set of independent features, called protections, to your code. Each one is a toggle or a level you pick, and you can mix and match depending on how much protection you need versus how big or fast you want the output. Roughly, they fall into a few groups:
- Clean-up — strips debug information and other metadata that isn't needed to run the program.
- Hiding text and numbers — encrypts string and number constants so they aren't sitting in the file in plain form.
- Hiding structure — renames classes, methods and fields, and reshapes how the code branches, so the logic is harder to follow.
- Sealing classes — encrypts whole classes and only decrypts them at runtime, behind a method you choose.
- Native protection — moves selected methods out of Java entirely into a compiled native library.
Start simple
You don't need every feature turned on. A new project usually does fine with renaming, string protection, and the clean-up passes — see Quick start.
Where to go next
Installation covers building and running flowguard. Quick start walks through protecting your first jar. Settings reference lists every option in detail.