Compile C and C++ to the browser without publishing your engine.

Emscripten puts decades of native work one download away. TrustSig Protect obfuscates that module and virtualizes the functions you pick.

01The problem

Years of native work, one download away.

A WebAssembly module reaches the browser as a file like any other.

  1. Anyone can save the module your page loads and open it in tools that cost nothing.

  2. Names, imports and strings survive the compile and describe what each part of it does.

  3. The structure of code that took years to write is there to read.

02What gets protected

You choose what disappears.

Protection lands on the functions you pick, not on the whole module.

  1. You mark the parts worth hiding: solvers, pricing, licence checks, anything you would not publish.

  2. The rest of the module stays as your build produced it.

  3. That keeps the output close to the size you ship today.

03Obfuscation

Nothing readable stays in the binary.

Names go, the order goes, and the strings stop being strings.

  1. Every meaningful function, import and export name is stripped or randomised.

  2. Control flow is flattened, so the order your code runs in is no longer visible in the file.

  3. Sensitive values sit encrypted and are decrypted only for the instant they are used.

04What changes

Porting to the browser stops meaning handing over the source.

A native binary took real work to reverse. A WebAssembly module used to take an afternoon. After a protected build there are no names to search, no order to follow, and the parts that matter are not WebAssembly any more.

05Virtualization

The functions that matter stop being WebAssembly at all.

Obfuscation hides how your code reads. Virtualization changes what it is.

  1. Protect compiles the functions you picked into bytecode for an instruction set that exists only in your build.

  2. A small engine ships with your module and runs that bytecode.

  3. The next build gets a different instruction set, so nothing learned from this one carries over.

06Why tools bounce

No off-the-shelf tool recognises the output.

Public de-obfuscators look for patterns our engine never leaves.

  1. The obfuscation engine is ours, not a wrapper around a public one.

  2. Off-the-shelf de-obfuscators have nothing to unwrap, because the output matches nothing they know.

  3. Every build is laid out differently, so anything learned from one file is worthless against the next.

07In the build

What a protected module carries.

Virtualization
The functions you pick run as bytecode on an engine that only your build has.
Control-flow flattening
The order your code runs in stops being visible in the file.
Symbol scrubbing
Function, import and export names are stripped or randomised.
String vault
Sensitive values stay encrypted and are decrypted only for the instant they are used.
Compact output
Virtualization lands only on the functions you pick, so the module stays close to its original size.
Polymorphic builds
Every build differs byte for byte, down to the layout of the bytecode.
08 Questions

Emscripten builds, answered

Protect works on WebAssembly, which is what an Emscripten build produces.

No. You choose which functions to protect, and nothing about the way they are written changes.

Virtualization lands only on the functions you pick, so the rest of the module is unchanged.

Code running inside the engine is slower than plain WebAssembly, which is why it belongs on the logic worth hiding rather than on an inner loop.

09Get started

Get in touch.

Tell us what your module does, what needs protecting, or whatever you want to ask.