| Requirement | Notes |
|---|---|
| OS | Windows 10/11 x64 |
| IDE / toolchain | Visual Studio 2022 with Desktop development with C++ |
| Toolset | MSVC v143, C++20 |
| Package manager | vcpkg with VS integration |
| SDK | Windows 10/11 SDK (DbgHelp) |
Linux can host the repo and scripts, but building and running ObfuGuard.exe requires Windows (or a full Windows PE environment). Wine is not supported as a primary target.
- Install VS 2022 from visualstudio.microsoft.com.
- Workload: Desktop development with C++.
- Include MSVC v143 and a recent Windows SDK.
git clone https://github.com/microsoft/vcpkg.git
cd vcpkg
.\bootstrap-vcpkg.bat
.\vcpkg integrate installvcpkg install capstone:x64-windows
vcpkg install keystone:x64-windows
vcpkg install lief:x64-windows
vcpkg install asmjit:x64-windows
vcpkg install zydis:x64-windowsTransitive packages (e.g. fmt, spdlog) may appear under vcpkg list.
Confirm:
vcpkg list | findstr /i "capstone keystone lief asmjit zydis"git clone https://github.com/sondt99/ObfuGuard.git
cd ObfuGuard- Open
ObfuGuard.slnin Visual Studio 2022. - Configuration: Release
- Platform: x64
- Build Solution (
Ctrl+Shift+B).
Primary output:
x64\Release\ObfuGuard.exe
Debug builds work for development; use Release|x64 for evaluation and tests (exception handling and hardening flags are enabled for that config in recent versions).
Keep these next to ObfuGuard.exe (vcpkg often copies them via app-local on build):
| DLL | Origin |
|---|---|
capstone.dll |
vcpkg |
keystone.dll |
vcpkg |
LIEF.dll |
vcpkg |
asmjit.dll |
vcpkg |
Zydis.dll |
vcpkg |
fmt.dll / spdlog.dll |
transitive |
For each target program:
| File | Required |
|---|---|
program.exe |
Yes |
program.pdb |
Yes (same folder preferred; tool also resolves CodeView path or .pdb sibling) |
Compile with debug info, for example:
cl /O2 /Zi /Fe:myapp.exe myapp.cppShip-time defaults live in:
ObfuGuard\blacklist_default.txt
At runtime ObfuGuard looks for this file under common paths (working directory, ObfuGuard/, next to the target PE). If missing, built-in CRT/runtime names are used. Format: one symbol per line; # comments; optional big:Name for large-binary-only exclusions.
cd x64\Release
.\ObfuGuard.exe
# Choose 0 to exitThen run the suite (with a built tool):
cd ..\..\binary_test
python auto_test.py
python match_check.pyOverride binary path if needed:
$env:OBFUGUARD_EXE = "D:\path\to\ObfuGuard.exe"| Symptom | Fix |
|---|---|
| Missing headers (Zydis, LIEF, …) | Install all five packages with :x64-windows; re-run vcpkg integrate install |
| Unresolved external symbols | Match x64 platform to vcpkg triplet; rebuild Release |
| Missing DLL at run time | Copy vcpkg app-local DLLs next to ObfuGuard.exe |
| PDB not found | Ensure name.pdb exists; rebuild target with /Zi |
More troubleshooting: faq.md.