- Status
- Offline
- Joined
- Mar 3, 2026
- Messages
- 546
- Reaction score
- 7
If you are tired of your Rust-based projects being a breeze to reverse-engineer, it's time to move beyond standard compilation. This is an OLLVM (Obfuscation-LLVM) pass plugin specifically for the Rust language, built on LLVM 19.1.4, which adds a decent layer of protection against static analysis.
While Rust provides some safety, its binary structure can still be quite predictable. This plugin introduces several obfuscation primitives directly into the LLVM pipeline to mess with the control flow and data structures.
Obfuscation Features
Setup and Usage
To get this running, you will need the nightly toolchain. Testing was performed on nightly 1.85, so stick to that or newer for compatibility.
1. Move the ollvm.dll into your cargo directory (specifically where your Cargo.toml is located).
2. Update your Cargo.toml to include the following profile flags:
3. Ensure you have the right toolchain installed:
Using OLLVM isn't a silver bullet against a determined reverse engineer, but it significantly raises the entry barrier compared to a standard release build. If you're building internals or sensitive tools, this is a solid addition to your CI/CD pipeline.
Drop your results below if you're seeing any significant performance hits during compilation on larger projects.
You cant view this link please login.
While Rust provides some safety, its binary structure can still be quite predictable. This plugin introduces several obfuscation primitives directly into the LLVM pipeline to mess with the control flow and data structures.
Obfuscation Features
- irobf-indbr — Indirect branching to break basic block analysis.
- irobf-icall — Indirect function calls to hide call graphs.
- irobf-indgv — Obfuscation of global variables.
- irobf-cff — Control Flow Flattening (CFF) to turn logical flow into a switch-based mess.
- irobf-cse — String encryption to hide sensitive strings from strings.exe.
- irobf-cie — Integer encryption/obfuscation.
- irobf-cfe — Floating point constant encryption.
Setup and Usage
To get this running, you will need the nightly toolchain. Testing was performed on nightly 1.85, so stick to that or newer for compatibility.
1. Move the ollvm.dll into your cargo directory (specifically where your Cargo.toml is located).
2. Update your Cargo.toml to include the following profile flags:
Code:
cargo-features = ["profile-rustflags"]
[profile.release]
rustflags = [
"-Zllvm-plugins=ollvm.dll",
"-Cpasses=irobf(irobf-indbr,irobf-icall,irobf-indgv,irobf-cff,irobf-cse,irobf-cie,irobf-cfe)",
]
3. Ensure you have the right toolchain installed:
Code:
rustup toolchain install nightly
This plugin targets LLVM 19.1.4. If you are using an older or significantly newer version of the Rust compiler that bundles a different LLVM version, the plugin might fail to load or cause crashes. Always check your rustc --version --verbose to verify the LLVM backend version before debugging. Credits go to 0xlane and KomiMoe for the implementation.
Using OLLVM isn't a silver bullet against a determined reverse engineer, but it significantly raises the entry barrier compared to a standard release build. If you're building internals or sensitive tools, this is a solid addition to your CI/CD pipeline.
Drop your results below if you're seeing any significant performance hits during compilation on larger projects.