What can devirtualization recover from VMProtect?
Devirtualization recovers what virtualized functions do and translates that logic back into code an analyst can read in tools such as IDA. VMProtect's own documentation describes the manual alternative: build a disassembler for the virtual machine's instruction set, then analyze the disassembled bytecode, once for every virtual machine design in the file.
Devirtualization does not recover the original source code, though: the names, comments and structure that the compiler discarded were gone before VMProtect ever processed the file.
Recovery is not all-or-nothing either. A Devirt result fixes its denominator, the protected functions in scope, and reports each one as proven, runtime-dependent, unresolved or bounded, so no function drops out of the count. How to read a devirtualization coverage figure explains what each state means and why the denominator comes first.
For VMProtect 2.x and 3.x files you are authorized to analyze:See VMProtect devirtualization
Nothing disappears from the denominator.
This teaching ledger contains 100 selected operations: 86 proven, 7 runtime-dependent, 2 unresolved, and 5 permanently bounded. Every unit is counted exactly once.
Synthetic, not a service benchmark. Solver SAT and timeout counts are separate outcomes, not extra coverage buckets.
