How vtil-project/vtil-core works
VTIL is a core framework for binary de-obfuscation and de-virtualization: native instructions are lifted into a flexible virtual-machine intermediate language (VTIL), optimized, and can be emitted back into native formats. The graph preserves architecture support, PE handling, symbolic execution, and compiler optimization as distinct capabilities. Evidence is limited to the README and the supplied source index and excerpts; unsampled implementation links are omitted or marked unverified.
Main entry points: basic_block.hpp Routines and Blocks · optimizer Optimization Passes · instruction.hpp VTIL Instructions · arch Native Disassembly
Components 19
Native Architecture
- Native Disassembly
VTIL-Common/arch - Register Descriptions
VTIL-Architecture/arch/register_desc.hpp - Native Code Emission
VTIL-Common/arch
VTIL Representation
- Instruction Set
VTIL-Architecture/arch/instruction_set.hpp - Routines and Blocks
VTIL-Architecture/routine/basic_block.hpp - VTIL Instructions
VTIL-Architecture/routine/instruction.hpp - Routine Serialization
VTIL-Architecture/routine/serialization.cpp
Symbolic Analysis
- Symbolic Variables
VTIL-Architecture/symex/variable.hpp - Symbolic Context
VTIL-Architecture/symex/context.cpp - Expressions
VTIL-SymEx/expressions/expression.cpp - Expression Simplifier
VTIL-SymEx/simplifier/simplifier.cpp - Rewrite Directives
VTIL-SymEx/directives - Execution Tracing
VTIL-Architecture/trace/tracer.cpp - Virtual Machine Interface
VTIL-Architecture/vm/interface.cpp
Optimization
- Optimization Passes
VTIL-Compiler/optimizer - Compiler Interface
VTIL-Compiler/common/interface.hpp
Binary and Common
- PE Image Support
VTIL-Common/formats/winpe.cpp - Common Utilities
VTIL-Common/util/type_helpers.hpp
Other components
- Binary Analyst
Connections 17
- Binary Analyst → Native Disassembly: lifts binary
- Native Disassembly → Routines and Blocks: produces VTIL
- Register Descriptions → VTIL Instructions: describes operands
VTIL-Architecture/routine/instruction.hpp - Instruction Set → VTIL Instructions: defines operations
VTIL-Architecture/routine/instruction.hpp - Routines and Blocks → VTIL Instructions: contains instructions
VTIL-Architecture/routine/basic_block.hpp - Routines and Blocks → Routine Serialization: serializes
- Symbolic Context → Symbolic Variables: reads and writes
VTIL-Architecture/symex/context.cpp - Symbolic Variables → Expressions: represents values
- Expressions → Expression Simplifier: uses simplification
VTIL-SymEx/expressions/expression.cpp - Expression Simplifier → Rewrite Directives: applies transforms
VTIL-SymEx/simplifier/simplifier.cpp - Compiler Interface → Optimization Passes: runs passes
- Optimization Passes → Routines and Blocks: optimizes VTIL
- Optimization Passes → Common Utilities: uses helpers
VTIL-Compiler/optimizer/fast_propagation_pass.cpp - Execution Tracing → Virtual Machine Interface: uses VM lambda
VTIL-Architecture/trace/tracer.cpp - PE Image Support → Binary Analyst: supports image analysis
- Routines and Blocks → Native Code Emission: emits native code
- Routines and Blocks → Optimization Passes: optimized by compiler