devirt.re
Create account
Menu

Obsidium devirtualization.

Recover readable logic from code that the Obsidium protector runs on its own virtual CPU, with the proof state of every function on record. Start with a free assessment.

Protected programSHA-256 recordedRecoverH_04H_12H_21H_33Readable outputvalidate_header()Differential checkOriginalRecoveredCoverage ledgerProvenRuntimeBoundedIllustrative example · no customer dataProtected program → readable logicAuthorized filevalidate_record()Original / recoveredCoverage ledgerProvenRuntimeBounded
Unknown does not have to mean protected. Start with the file and the question you need answered.

What is Obsidium devirtualization?

Obsidium devirtualization is the recovery of readable program logic from code that the Obsidium software protector has converted into bytecode for its virtual CPU. Devirt maps the virtualized code back to functions you can inspect in your own tools, and records whether each function is proven, runtime-dependent, unresolved or permanently bounded.

The protection is the obstacle.
Understanding is the outcome.

What we support

  • Code virtualized by Obsidium
  • Exact build eligibility confirmed by free assessment
  • Function-level coverage ledger

Family recognition is an intake decision, not a guarantee for every build. Custom behavior and multiple protection layers can require a separate assessment.

What changes in your workflow

A binary does not need virtualization to be in scope. Devirt can reverse ordinary compiled programs, map their behavior and interfaces, and surface risk indicators for your authorized review.

The delivery pairs readable output with a full ledger for the agreed scope. Proven, runtime-dependent, unresolved, and permanently bounded units remain distinguishable, including units that were never virtualized.

See how the checks work

How Obsidium virtualizes code

Obsidium is a software protection and licensing system for 32-bit and 64-bit Windows applications and games. Its code virtualization converts selected parts of an application's native machine code into functionally equivalent bytecode for a virtual CPU, which interprets that bytecode while the program runs.

Virtualization is one Obsidium layer among several. Obsidium also encrypts and compresses code and data, can keep individual parts of the code encrypted until they execute, hides string constants, adds counter-measures against disassembling, debugging, dumping and patching, and can encrypt code so that only a valid license decrypts it.

  • Virtualized: selected functions, converted to bytecode for Obsidium's virtual CPU.
  • Encrypted at run time: individual code parts decrypted in memory only while they execute. They are encrypted, not virtualized.
  • Left native: a 2026 research paper reports that Obsidium avoids virtualizing functions that may throw exceptions.
Three ways Obsidium treats a function: virtualized into bytecode for its virtual CPU, encrypted and decrypted in memory only while it runs, or left as native code.
Illustration: the three ways Obsidium treats code. Function names are symbolic.

What Devirt accepts and how to start

Every Obsidium binary starts with a free assessment. We confirm eligibility for the exact build, configuration and architecture, estimate coverage and send a written quote before paid work begins.

Obsidium is not in checkout yet, so every Obsidium job starts with the free assessment, and nothing is charged unless you accept the written offer. Accepted work is billed per result on the same price list as VMProtect, or covered by a subscription. The pricing page lists current prices.

What you receive

An Obsidium result arrives in the output you choose: an IDA database, annotated pseudocode, a full reverse engineering report, LLVM IR or structured API JSON. Every result carries its coverage ledger, a proof summary and the remaining limits, and IDA output is checked after it is saved and reopened.

How the evidence is reported

Devirt reports every unit of an Obsidium result in one of four coverage categories, and the four counts add up to the total, so no function drops out of the record.

Eligible operations receive formal checks. A solver searches for any input on which the recovered code and the original disagree, and the lifted LLVM representation and independently compiled native execution are compared with the original observations. Counterexamples and timeouts stay visible; they are not counted as proof.

  • Proven: verified within the declared model.
  • Runtime-dependent: a real input or environment still matters.
  • Unresolved: the available evidence did not settle an in-scope unit.
  • Permanently bounded: an explicit analysis limit remains.
Four steps from a free assessment to delivery (assessment, recovery, checks, delivery in IDA database, annotated pseudocode, full RE report, LLVM IR or API JSON), with a coverage ledger split into proven, runtime-dependent, unresolved and permanently bounded units.
Illustration: the path from free assessment to a checkable result. Segment sizes are not a result.

How Obsidium differs from VMProtect and Themida

Obsidium, VMProtect and Themida all translate selected code into bytecode for a private virtual machine, but they draw the line between virtualized and native code differently. Obsidium pairs virtualization with run-time code encryption, and a 2026 research paper describes its virtual CPU as a decode-dispatch loop that leaves functions which may throw exceptions outside the virtual machine. VMProtect can use several different virtual machines inside one application. Themida offers seven named virtual machine profiles.

For analysis, the split matters. An Obsidium function that is only encrypted becomes ordinary native code once it is decrypted, while a virtualized function stays bytecode. The Devirt ledger keeps every unit in scope distinguishable, including units that were never virtualized.

Authorized analysis only

Devirt analyzes Obsidium files for owners and authorized analysts: security and vulnerability research, malware analysis, interoperability and compatibility verification, and compliance work. You must own or have authorization to analyze every file you upload, and a supported protector family does not establish permission to analyze a particular binary.

Obsidium protects commercial applications and games against cracking and piracy. Devirt does not crack software or games, bypass license checks or remove copy protection, and it declines any request with that aim.

See what lands on your desk.

One recovered program. Different ways to work with it. Inspect a teaching example, switch formats, and follow the link back to its evidence.

Example deliverableSynthetic data · not a customer file
Same logic. A different view.
VirtualizedInstructions through a VM
Protected logicTeaching VM / instruction listing
; Authored teaching VM, not vendor bytecode
00  LOAD32  r0, input.size
01  PUSH    r0
02  PUSH    0x10
03  UGE
04  STORE   p0
05  LOAD32  r1, input.magic
06  PUSH    r1
07  PUSH    0x44565254
08  EQ
09  LOAD    p0
10  AND
11  RET
DevirtualizedThe deliverable you can inspect
validate_recordC / sample function
#include <stdbool.h>
#include <stdint.h>
 
bool validate_record(uint32_t size, uint32_t magic) {
  const uint32_t header_size = 16u;
  const uint32_t expected_magic = 0x44565254u;
 
  if (size < header_size) {
    return false;
  }
 
  return magic == expected_magic;
}

Drag the divider to reveal the difference. Or choose a view above. Keyboard: arrow keys, Home and End.

In ordinary language

Check the declared size. Check the type marker. Accept only when both checks pass.

The evidence travels with the file.

Readable code explains the behavior. The ledger explains how far you can rely on it.

Download teaching source

Original teaching material, not customer output. The IDA view illustrates a database's contents; it is not a downloadable .i64. No measured proof or service benchmark is claimed by these examples.

Your build determines
the final scope.

Every Obsidium job starts with the free assessment: Devirt reviews the build, estimates coverage and sends a written offer, and nothing is charged unless you accept it.

Start a free assessment

Obsidium devirtualization: questions and answers

Does Devirt handle 32-bit, 64-bit and .NET files protected with Obsidium?

Obsidium protects both 32-bit and 64-bit Windows programs, native and .NET. Send your file for a free assessment to confirm whether its exact build, architecture and file type are in scope before any paid work.

Can I use Devirt on software I do not own?

Only with the owner's authorization. Every upload requires you to confirm that you own the binary or are authorized to analyze it, and Devirt may ask you to clarify the scope or the authorization before starting.

What if Devirt cannot prove the recovery?

Functions that cannot be proven stay in the ledger as runtime-dependent, unresolved or permanently bounded; they are never hidden. The free assessment estimates coverage before any paid work, nothing is charged unless you accept the written offer, and any revised scope and price need your approval.

Is my Obsidium file kept confidential?

Yes. Analysis runs in isolation, files are not shared between customers, uploads are not used for training, and your file is used only for the work you requested. Released output is retained for 72 hours by default or 30 days on Team.

Your binary stays your business.

Isolated analysis. No sharing between customers. No training on your upload. Your file is used only for the work you requested.

Read the data-handling policy
Input

Your uploaded file

Isolated processing

In scope
Output

Your result files

Not yet released

In scope
Audit

Processing record

Recording the work

In scope
Different data. Different clocks.

Input deletion follows delivery. This timeline shows the default 72-hour output window. Team outputs are kept for 30 days. Audit records have a separate 90-day window.

Policy illustration, not a live deletion certificate. Deletion is confirmed from provider receipts. Assessment inputs, unpaid jobs, and account/billing records have their own rules in the policy.

What do you need to understand?

Start in your account. If your upload needs manual work, we review it and email you a written scope and quote before paid work begins.

Create your workspace

Create an account, verify your email and upload your file. We review custom work and email your scope and quote.

Start a free assessment

Find the right plan