Windows PE protection — finished product
AkiProtect for Windows is the mature shipping stack: native EXE/DLL packing, GUI + CLI builder, multi-language SDK, offline serials and online activation. macOS is the separate public beta track.
- Native PE32 / PE32+ — x86, x64, ARM64 (builder must match; MSVC/MinGW/Go native PE OK)
- EXE and load-only DLL (optional named/ordinal no-arg export dispatch)
- SDK markers (Virtualize / Mutate / Ultra / LockByKey) + licensing & activation APIs
- .NET: use --dotnet-* obfuscator and/or --dotnet-wrap (CLR host). Native stub-pack of CLR PE is rejected.
x64 = Intel/AMD 64-bit (GUI included). x86 = 32-bit. ARM64 = Windows on ARM (CLI; GUI use x64 under emulation if needed).
AkiProtect-Windows-x64-0.34.0.zip · 26 MBsha256:e3d1fb11564873c1c122b0beb5bf746a47df14b34c4a9667bfc1cd5fe13f2e2e
AkiProtect-Windows-x86-0.34.0.zip · 1.6 MBsha256:2cd214e977b6511140f3cd542499921e485191afd43a1ad1395686c575175d76
AkiProtect-Windows-arm64-0.34.0.zip · 1.6 MBsha256:b7d991267a5462d9f49a472149aaf22c12f697d276303b8dcb80272c8a7474d5
What binary types Windows supports
Aligned with COMPATIBILITY.md and the local test corpus — not marketing fluff.
Native EXE
Ordinary native Windows executables (console or GUI), including Go native PE. Same-architecture pack only; cross-arch rejected with clear diagnostics.
Native DLL
Load-only DLL payloads with DllMain attach/detach, TLS lifecycle, resources. Optional --dll-export / --dll-export-ordinal for a no-argument startup export.
.NET assemblies
Obfuscate with --dotnet-* (rename, strings, cflow, VM, shield, max). Prefer --dotnet-wrap to embed the assembly in a native CLR-host EXE. Feeding CLR PE to the native Mode A stub packer is rejected.
Pack modes
Mode A (default): stub overlays the payload. Mode B (--mode inplace): mutate/virtualize in-place with .akirt injection — needs explicit protect ranges (SDK / --virt-func). Optional --output-dll emits a DLL host for DLL inputs.
Rejected / out of scope
Cross-architecture packing, kernel drivers (.sys) as protect targets, and treating unmanaged packing of CLR payloads as supported.
What you get on Windows
- EXE & DLL, three ISAs
x86, x64 and ARM64 native PE (console or GUI). Matching builder/stub architecture required. - Compression + VM + Ulam
LZ77, LZ4, LZNT1, LZMS, LZMA; optional --vm (multi-pass) and --ulam-layout integrity groups. - Anti-analysis stack
Anti-debug, anti-tamper, anti-dump and related hardening controls. - Licensing ready
Offline RSA serials and online activation tickets (WebLM format). - GUI + CLI + reports
Qt desktop app, BinaryProtector_builder.exe, --report / --compat-report / --verify-packed for CI.
Windows SDK
Link AkiProtectSDK32/64/arm64 at build time. After packing, Begin/End calls are NOP’d and the SDK import is stripped — no SDK DLL at runtime.
Protection markers
AkiProtectBegin, BeginVirtualization, BeginMutation, BeginUltra, LockByKey variants, End. Builder auto-scans and protects the body between markers.
Licensing & activation APIs
SetSerialNumber, GetSerialNumberState/Data, GetCurrentHWID, ActivateOffline, GetActivationRequest, FindVirtualFileA — IAT-patched after pack when license/activation/virt-file are enabled. C/C++ header has the full surface; C#/VB/Pascal bindings currently omit Activate* (use C API or add P/Invoke).
Languages
C/C++ (full), C# / VB.NET / Delphi (markers + license; activation APIs mainly via C header today), MASM include, PHP/C# keygen.
Keygen SDK
AkiKeygenSDK for issuing offline RSA serials (same wire format as the public demo portal).
// C/C++ — mark a function for virtualization #include "AkiProtectSDK.h" int CheckLicense(void) { AkiProtectBeginVirtualization("CheckLicense"); /* sensitive logic */ AkiProtectEnd(); return 1; } // After pack: AkiProtectSetSerialNumber / ActivateOffline are wired by the runtime
Some SDK service stubs (e.g. IsVirtualMachinePresent in unpackaged DLL) return conservative defaults until packed; see docs/sdk_markers.md.
CLI examples
Full flag reference: Documentation. Editions: Lite / Demo / Standard / Ultimate (--edition); default Ultimate.
# Native pack (Release-style) AkiProtect_builder.exe --i myapp.exe --lz4 --vm --ulam-layout # DLL with startup export AkiProtect_builder.exe --i my.dll --o my_packed.exe --lz4 --vm --dll-export RunMe # Mode B inplace (needs SDK markers or --virt-func) AkiProtect_builder.exe --mode inplace --i myapp.exe --virt-mode virtualize --virt-func 0x401000 # DLL host output (DLL input required) AkiProtect_builder.exe --i my.dll --o my_host.dll --output-dll --lz4 --vm # .NET obfuscation / wrap (not Mode A CLR stub-pack) AkiProtect_builder.exe --dotnet-harden --i managed.exe --o managed_obf.exe AkiProtect_builder.exe --dotnet-wrap --i managed.dll --o managed_host.exe # Compatibility check AkiProtect_builder.exe --i candidate.exe --explain-unsupported
Try the shipping Windows stack
Request a 14-day demo serial, then protect with your Windows GUI/CLI/SDK. Online activate uses https://akiprotect.core-jmp.org/activate.php.
AkiProtect-Windows-x64-0.34.0.zip · 26 MBsha256:e3d1fb11564873c1c122b0beb5bf746a47df14b34c4a9667bfc1cd5fe13f2e2e
AkiProtect-Windows-x86-0.34.0.zip · 1.6 MBsha256:2cd214e977b6511140f3cd542499921e485191afd43a1ad1395686c575175d76
AkiProtect-Windows-arm64-0.34.0.zip · 1.6 MBsha256:b7d991267a5462d9f49a472149aaf22c12f697d276303b8dcb80272c8a7474d5