VTIL-Sandbox is a local VTIL inspection tool with:
- a C++ backend (
VTIL-Sandbox) that parses uploaded.vtilroutines and exposes JSON over HTTP - a Vue frontend (
VTIL-SandboxFrontend) that visualizes blocks, CFG edges, and instruction details
- Backend API:
http://127.0.0.1:8090 - Frontend dev server:
http://127.0.0.1:8080(Vue CLI) - Data flow:
- Frontend uploads
.vtilbytes to backend - Backend deserializes VTIL and builds rich JSON (blocks, CFG, instructions, descriptor/operand metadata)
- Frontend renders interactive block list, CFG view, and instruction inspector
- Frontend uploads
VTIL-Core/- VTIL core librariesVTIL-Sandbox/- C++ backend serverVTIL-SandboxFrontend/- Vue frontend UICMakeLists.txt- root build entry point
- CMake 3.14+
- MSVC (Windows)
- Node.js + npm
cmake -S . -B output -DVTIL_SANDBOX_BUILD_FRONTEND=OFF
cmake --build output --config Release --target sandboxTip: use --config Debug while actively debugging.
output\VTIL-Sandbox\Release\sandbox.exeIf you built Debug instead, run:
output\VTIL-Sandbox\Debug\sandbox.exeBackend should listen on:
http://127.0.0.1:8090
cd VTIL-SandboxFrontend
npm install
npm run serveThen open:
http://127.0.0.1:8080
GET /health- basic readiness probe
GET /api/state- returns current routine state as JSON
POST /api/upload?name=<filename>- body: raw
.vtilbytes (application/octet-stream)
- body: raw
- block list + selection
- CFG view with controls (
+,-,100%,Fit) - incoming/outgoing edge highlighting for selected block
- instruction search and jump (
VIP/mnemonic/text) with configurable priority - expandable instruction rows with descriptor/operand inspector-style details
- dark mode
- This is currently designed for local use (loopback API).
- Backend includes request size limits and timeout handling for safer local operation.
- If backend is not running, frontend status shows API offline.
Build frontend production bundle:
cd VTIL-SandboxFrontend
npm run buildBuild backend only:
cmake --build output --config Release --target sandbox