Skip to content

v0.9.0-rc1

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 08 Aug 16:33
· 39 commits to main since this release
1674234

xollvm — v0.9.0-rc1

Built against stock LLVM release/22.x.

Prerelease. Headline change: the obfuscator now runs inside a normal
clang/clang-cl compile via the default-off -enable-obfuscation flag —
no opt round-trip, so it drops straight into Visual Studio / MSBuild.

What's new (vs v0.8.0)

Added

  • In-compiler obfuscation — default-off -enable-obfuscation flag runs the
    obfuscator during a normal clang/clang-cl -c compile via a PipelineStart
    extension point. No opt round-trip; enables Visual Studio / MSBuild
    integration. Off by default → pipeline byte-identical; annotation-gated →
    un-annotated code untouched. (#7)
  • vcall: encrypted, runtime-filled vtable behind the encTable knob. (#4)
  • constenc: wrapMBA option to wrap encrypted constants in MBA. (#5)

Fixed

  • Correctness fixes in the bcf, flattening, and split passes. (#3)
  • Corrected docs/USER.md: the old clang -mllvm -passes=obfuscation recipe was
    invalid (clang has no -passes); replaced with the -enable-obfuscation flow.

Tooling

  • Deobfuscation resilience benchmark (Z3/angr attacks across passes). (#6)

Docs

  • USER.md clang/clang-cl + Visual Studio/MSBuild integration guide.
  • Refreshed VM diagrams and annotation knobs (obf_annotations.h).

Using it in Visual Studio

  1. Extract xollvm-windows-Release.7z, e.g. to C:\xollvm\ (so C:\xollvm\bin\clang-cl.exe exists).
  2. Install the LLVM Compiler Toolchain VS extension (once) → LLVM (clang-cl) toolset.
  3. Project → Properties → General → Platform Toolset = LLVM (clang-cl); LLVM → LLVM Toolchain Directory = C:\xollvm.
  4. C/C++ → Command Line → Additional Options:
    /clang:-mllvm /clang:-enable-obfuscation /clang:-mllvm /clang:-obf-seed=1 /clang:-mllvm /clang:-obf-deterministic
  5. Annotate functions: __attribute__((annotate("obf: mba, bcf, flattening"))).
  6. Build (Release /O2 fine — obfuscation survives the optimizer).

Artifacts

File What OS
xollvm-linux-Release.tar.zst clang/opt with obfuscator built in Linux x86_64
xollvm-windows-Release.7z clang/opt with obfuscator built in Windows x64
Obfuscator-linux-x64.so loadable -fpass-plugin Linux x86_64

Cross-compilation backends

-DLLVM_TARGETS_TO_BUILD="X86;AArch64;ARM;RISCV" — X86, AArch64, ARM, RISC-V.