Skip to content

Getting started

Three steps take you from stock LLVM to an obfuscated binary:

  1. Install xollvm — download a release, build the static-extension toolchain, or build the loadable .so plugin.
  2. Annotate the functions you want protected, in the source.
  3. Run -passes=obfuscation and 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.