Documentation

Everything you need to protect your binaries with ChaosProtector.

Getting Started

ChaosProtector protects your Windows 32-bit (x86) and 64-bit (x86-64) PE executables (.exe) and dynamic-link libraries (.dll) from reverse engineering using code virtualization, obfuscation, and anti-tamper techniques. Follow these steps to protect your first binary.

1

Download ChaosProtector

Sign in with your Google account and download ChaosProtector from the Dashboard. The Trial plan is free and includes obfuscation and the full GUI application.

2

Open your executable

Launch ChaosProtectorGui.exe and click Open File to load your 32-bit or 64-bit PE executable or DLL. ChaosProtector will parse the binary and display all detected functions.

3

Select functions to protect

Use the function list to select which functions you want to virtualize. Focus on security-critical functions like license checks, cryptographic routines, and proprietary algorithms. Leave performance-critical code unprotected for the best balance of security and speed.

4

Configure protection options

Enable the protection features you need:

  • Code Virtualization — Converts selected functions to custom VM bytecode (Basic & Pro)
  • Obfuscation — Applies control-flow flattening and junk code insertion (all plans)
  • String Encryption — Encrypts string literals to prevent static analysis (Basic & Pro)
  • IAT Destruction — Hides imported API calls from the Import Address Table (Pro)
  • Anti-VM Detection — Detects virtual machines and sandboxes (Pro)
5

Protect and test

Click Protect to generate the protected binary. ChaosProtector outputs the protected executable alongside a reconstructed PDB file for debugging. Test your protected binary thoroughly before distributing it.

Command-Line Interface

ChaosProtector includes a CLI mode for automation and CI/CD integration. Use it to protect binaries in build scripts without the GUI.

ChaosProtectorGui.exe --file <path-to-exe> [options]

Options:
  --file <path>        Path to the PE executable to protect
  --virtualize         Enable code virtualization
  --anti-vm            Enable anti-VM detection
  --imports            Enable IAT destruction
  --strings            Enable string encryption
  --output <path>      Output path (default: <filename>_protected.exe)

Example: Protect an executable with all features enabled:

ChaosProtectorGui.exe --file MyApp.exe --virtualize --anti-vm --imports --strings

Best Practices

  • Selective protection: Only virtualize security-critical functions. Virtualizing your entire binary will significantly impact performance and increase file size.
  • Test thoroughly: Always test protected binaries before releasing. Code virtualization changes execution flow and may expose edge cases.
  • Keep the PDB: ChaosProtector generates a reconstructed PDB file. Store it securely — you will need it to debug crash dumps from protected builds.
  • Layer your defenses: Combine virtualization with string encryption, IAT destruction, and anti-VM detection for maximum protection.
  • Automate with CLI: Integrate ChaosProtector into your CI/CD pipeline using the CLI mode to protect every release build automatically.
  • CLion / MinGW-w64: Unstripped MinGW binaries are discovered automatically from embedded COFF symbols. If you strip the executable, generate a linker MAP file with the same basename (for example, app.exe and app.map) and keep it beside the PE while selecting functions. Functions that depend on unsafe GCC exception or unwind behavior remain visible but are marked unavailable for virtualization (fail-closed) instead of risking a broken output.

Supported Formats

ChaosProtector currently supports the following:

  • Platform: Windows
  • Architecture: x86 (32-bit) and x86-64 (64-bit)
  • Format: PE executables (.exe) and dynamic-link libraries (.dll)
  • Toolchains: Microsoft Visual C++ and CLion/MinGW-w64
  • Debug info: PDB reconstruction plus automatic COFF and same-basename MAP symbol discovery