Lacuna

Software protection. 136µs startup overhead. Zero hot-path impact.

Per-build uniqueness. Analysis-resistant by design. Angr ran 53 automated analysis steps in 0.4 seconds. Zero keys found. The challenge is open.

How it works

Three nested VMs

Execution passes through three virtual machine layers sequentially. Static analysis sees a different surface at each layer.

Analysis-resistant by design

Protection is not a gate around the computation. It is part of the computation. Removing it produces wrong answers.

Per-build uniqueness

RDRAND shuffles opcodes at build time. Every customer binary is structurally distinct. A working crack on one build is useless on another.

The Crack Challenge

Break it. Keep it forever.

Produce a 64-character hex key that causes the unmodified binary to print LICENSE VALID. Binary patching does not count. The key must generalize. Per-build RDRAND opcode shuffles mean each binary is unique. A patch on this build transfers nowhere.

Name Date Method
None yet.

Download challenge binary →

Integration

One call at startup. Your code runs unchanged.

// Initialize once at startup
lacuna_init("your-license-key");

// Your code runs unchanged
void process_data(Data* d) {
    // Zero overhead here
    d->compute();
}

License Lacuna →