documentation

How to use Oskrov

Most people only need the dashboard section below. CLI and SDK are Enterprise-only.

Using the dashboard

This is how everyone on Starter and Professional protects a binary. No install, no code changes.

1
Sign in Open your dashboard after creating an account.
2
Upload Drag in a .exe or .dll, or click to browse.
3
Choose options Toggle anti-debug, anti-tamper, reflection, packing, and verbose logging. All 8 protection modules run either way.
4
Download Watch the job status update live, then download the protected file.
Requirements: a modern browser. That's it. Protection runs on our servers, not yours.

CLI & SDK

Enterprise

Enterprise plans also get a local CLI and an SDK, for teams who want protection running inside their own build pipeline instead of (or alongside) the dashboard. Everything below this point is Enterprise-only.

check
venux.exe The CLI protection tool
check
venux_sdk.lib + venux.h SDK library and header for marking code regions
check
venux_ext.h Plugin development header
Requirements: Windows 10/11 (x64). Visual Studio 2019+ if you're compiling against the SDK.

SDK integration

Link against venux_sdk.lib and include venux.h, then wrap the regions you care about:

#include <venux.h>

void sensitive() {
    VNX_VIRTUALIZATION_BEGIN;
    // ... virtualized ...
    VNX_VIRTUALIZATION_END;
}

void other() {
    VNX_OBFUSCATION_BEGIN;
    // ... obfuscated ...
    VNX_OBFUSCATION_END;
}

CLI usage

Protect a binary in a single command:

venux --input app.exe --output app.protected.exe --anti-debug --anti-tamper

All options

FlagDescription
-i, --input <file> Input PE file to protect
-o, --output <file> Output file path
-p, --project <json> Load settings from project config
-m, --map <file> MAP file for symbol resolution
--plugins <dir> Plugin directory to load
--anti-tamper Enable anti-tamper integrity checks
--anti-debug Enable anti-debug protections
--reflection Enable process reflection
--no-pack Disable packing/compression
--no-core Disable core obfuscation transforms
--no-anti-disasm Disable anti-disassembly padding fill
--no-ep-obf Disable entry-point obfuscation
-b, --backup Create backup of original file
-v, --verbose Verbose logging
-q, --quiet Suppress all output
--gen-config Print default JSON config and exit

SDK markers

MacroProtection level
VNX_VIRTUALIZATION_BEGIN / END Full code virtualization (strongest)
VNX_OBFUSCATION_BEGIN / END Multi-layer obfuscation
VNX_CODE_FLATTENING_BEGIN / END Control-flow flattening
VNX_LITE_OBFUSCATION_BEGIN / END Lightweight obfuscation
VNX_DUAL_MODE_BEGIN / END Virtualization + obfuscation combined

Project configuration

Generate a starting point with venux --gen-config > project.json, then tune it:

{
    "input": "target.exe",
    "output": "target.protected.exe",
    "virtualizer": { "enabled": true, "complexity": 3 },
    "obfuscator": {
        "enabled": true,
        "control_flow_flattening": true,
        "string_encryption": true
    },
    "protector": {
        "anti_tamper": true,
        "anti_debug": true,
        "pack": true,
        "import_protection": true
    }
}

Plugin development

Export the C interface from a DLL to add your own stage to the pipeline:

#include <venux_ext.h>

extern "C" {
    __declspec(dllexport)
    VnxPluginInfo* VnxGetPluginInfo() {
        static VnxPluginInfo info = {
            1, "MyPlugin", "1.0", "Author",
            "My custom protection stage"
        };
        return &info;
    }

    __declspec(dllexport)
    int VnxPluginEvent(VnxPluginEvent event, VnxPluginContext* ctx) {
        if (event == VNX_EVENT_POST_TRANSFORM) {
            // custom post-transform logic
        }
        return 0;
    }
}