Loki-based protections are difficult to analyze. Every binary, including Obfuscator X and Griffin builds, starts with a free assessment and a written offer before paid work.
Protection changes the representation. The question is still what the program does.
What is Loki VM devirtualization?
Loki VM devirtualization is the recovery of readable program logic from code protected by Loki-based virtual machine obfuscation. Loki is an academic obfuscator presented at USENIX Security 2022 and designed to resist automated deobfuscation such as symbolic execution, taint analysis and program synthesis. Loki-derived binaries, including Obfuscator X and Griffin, are difficult cases and are not automated services at Devirt. Every binary requires its own free assessment before a scope, price and delivery window can be offered. Any accepted analysis reports its protected functions as proven, runtime-dependent, unresolved or permanently bounded.
The protection is the obstacle. Understanding is the outcome.
What we support
Obfuscator X and Griffin
Known Loki derivatives
Free assessment for every binary, including known variants
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
Virtualization replaces ordinary instructions with a custom interpreter. Devirt recovers meaningful operations and program structure so you can investigate behavior in your own tools.
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.
Loki is a code obfuscator from academic research: "Loki: Hardening Code Obfuscation Against Automated Attacks" by Schloegel, Blazytko, Contag, Aschermann, Basler, Holz and Abbasi, presented at USENIX Security 2022. Its public repository describes it as an academic prototype built to show new techniques for hardening virtual machine handlers.
Loki protects code the way other virtualizing protectors do, by translating it into instructions for its own virtual machine, and then hardens its handlers with formally verified expressions of arbitrary complexity. The authors report that recent research on simplifying mixed boolean-arithmetic expressions fails to simplify them, and that Loki cuts the success rate of program synthesis attacks to 19 percent in their evaluation.
Illustration after Schloegel et al., USENIX Security 2022. Loki hardens its handlers against automated attacks.
Loki VM devirtualization is for teams that need to read Loki-protected code they are allowed to analyze: malware analysts and incident responders, security researchers working within an authorized scope, software owners checking the logic of their own protected builds, and interoperability engineers verifying compatibility.
Loki, Obfuscator X and Griffin are assessed individually. Every Loki-derived binary requires a separate feasibility review, including known variants and new builds of a previously assessed program. Family recognition or a previous successful engagement does not make another binary eligible for automated processing.
How Devirt handles a Loki-protected file
Create an account, upload the authorized binary for a free assessment and describe the question you need answered. We review that exact file and email a feasibility report, estimated coverage, proposed deliverables, price and timeline. You accept the written offer before any paid analysis begins. If recovery is feasible, the agreed work reconstructs the virtual machine and handler semantics and checks eligible operations before anything is called proven.
Loki was designed to resist the known automated deobfuscation attacks, so a Loki result states plainly which functions were proven and which were not, rather than presenting readable output as recovered logic.
Every Loki-derived binary, including Obfuscator X and Griffin, requires a separate assessment and an accepted offer before paid work.
The free assessment returns a feasibility report and a written offer. Any paid deliverables depend on what that binary supports and what you agree in the offer. Available formats can include the following, each with the coverage ledger and a proof summary; IDA output is checked after it is saved and reopened.
IDA database (.i64): proven functions, named imports, typed API calls and the coverage ledger
Annotated pseudocode (.c): readable C with semantic naming and function-level commentary
LLVM IR (.ll): the lifted intermediate representation for your own toolchain
API JSON: structured findings and coverage for automated workflows
Full RE report (.pdf): architecture, behavior and an executive summary
How the evidence is reported
Devirt counts the protected functions in scope before recovery starts and reports every one of them in one of four proof states, so a function that was not proven cannot drop out of the result. A counterexample or a timeout never counts as proof.
Proven: verification evidence within a declared scope
Runtime-dependent: a real input or environment state is needed to finish the conclusion
Unresolved: inspected, but the available evidence did not settle it
Permanently bounded: outside an explicit analysis limit
Illustration: segment sizes are not a result. The four states always add up to the counted total.
Devirt accepts only files you own or are authorized to analyze, and a supported VM family does not by itself establish permission to analyze a particular binary. The acceptable use policy prohibits unlawful circumvention and redistribution without rights.
Each file is analyzed in isolation, is never shared between customers and is not used for training. Confidentiality, EU requirements and exclusivity can be agreed before transfer.
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
1; Authored teaching VM, not vendor bytecode200 LOAD32 r0, input.size301 PUSH r0402 PUSH 0x10503 UGE604 STORE p0705 LOAD32 r1, input.magic806 PUSH r1907 PUSH 0x445652541008 EQ1109 LOAD p01210 AND1311 RET
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.
Loki, Obfuscator X and Griffin require a free assessment for every binary. We email a file-specific scope, price and timeline before you decide. These are not automated profiles, and a previous assessment does not cover a different binary.
Devirt accepts Loki-derived binaries, including Obfuscator X and Griffin, for a free assessment. None is offered as an automated profile. Every binary needs its own review, including known derivatives, novel variants and new builds of a previously assessed program. Recovery is offered only where that assessment supports it.
Loki resists automated deobfuscation. What happens if a function cannot be proven?
The function stays in the result. Every protected function counted before recovery ends up proven, runtime-dependent, unresolved or permanently bounded, so you can see what the evidence covers and what it does not.
How is Loki VM devirtualization sold?
Every Loki-derived binary starts with a free assessment. We email a written offer with the scope, price, deliverables and timeline for that file. Paid work begins only after you accept; automated per-result pricing and subscription allowances do not qualify these binaries.
How long does Loki VM devirtualization take?
The assessment sets a delivery window for that exact binary. Loki-derived protections are difficult cases, so the standard automated and express delivery targets do not apply. The accepted offer states the timeline and review requirements before paid work begins.
Isolated processingDeletion requestedRemoved after confirmationNot retained
In scope
Output
Your result files
Not yet releasedAvailable to downloadExpired; deletion requestedNot retained
In scope
Audit
Processing record
Recording the work90-day audit retentionAudit only; no binaryDeletion due
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.