Getting started¶
Three steps take you from stock LLVM to an obfuscated binary:
- Install xollvm — download a release, build the static-extension
toolchain, or build the loadable
.soplugin. - Annotate the functions you want protected, in the source.
- Run
-passes=obfuscationand compile the result.
flowchart LR
A[Annotated<br/>C / C++] -->|clang -emit-llvm| B[LLVM IR]
B -->|opt -passes=obfuscation| C[Obfuscated IR]
C -->|clang -O2| D[Hardened<br/>binary]
Which install do I need?¶
| Situation | Use |
|---|---|
| Just want to try it, Linux/Windows | Prebuilt release |
Want it inside clang/opt everywhere (incl. Windows) |
Static extension |
| Have an installed LLVM 22, Linux/macOS, want the fast path | Loadable plugin |
New to the annotation model?
Read Concepts → Annotation model first — it explains why obfuscation is opt-in per function and how the config is resolved. Everything else builds on it.