interactive RE platform · bin → bin
Sigil is an interactive disassembler built on a purely-static devirtualization and deobfuscation engine. x86-64 is lifted to LLVM IR, executed under a faithful JIT, and normalized back toward readable code — no memory dumps, no sandbox. It's not a viewer over a database: the workbench drives the same engine that recovers the program.
↗ full size
A recovered function's control-flow graph — six basic blocks, routed branch edges, syntax-highlighted disassembly per node — live from the engine.
Beyond the listing
The same lifter that powers the listing feeds a normalization pipeline and a faithful JIT — so recovery is grounded in what the machine actually does, not pattern-matched against a specific protector. Where a budget or timeout is hit, Sigil records honest residue instead of a plausible-but-wrong answer.
Recover virtualized functions without ever running the sample — VM handlers lifted, dispatch unrolled, control flow rebuilt straight from the bytes.
In developmentremill → LLVM 21 → MCJIT models x86-64 exactly, not an approximate emulator. The IR you read is the semantics the CPU executes.
ShippingMBA, opaque predicates, junk and flattening dissolve under LLVM-driven passes — with a residue report that tells you exactly what didn't fold.
ShippingA scriptable JIT emulator and an MCP interface so external agents can drive analysis end to end — designed, and on the near roadmap.
PlannedShowcase
Every view drives the live analysis model — functions stream in as they're discovered, and nothing blocks while a large image analyzes. Click any frame to open it full size.
↗ full size
A linear listing: syntax-highlighted code, startp/endp boundaries, resolved imports, strings and data — streamed in as analysis runs.
↗ full size
Every incoming and outgoing edge for the current location — direction, address, and kind — one click from the call site.
↗ full size
Lift a function to LLVM IR and run the normalize pipeline — the optimized IR beside the listing, with a live residue report (lowered 67 reads / 56 writes… control:5). Early, and honest about what's left.
↗ full size
Recovered ASCII and UTF-16 literals, filterable and navigable — with the string data rendered inline in the listing.
↗ full size
Frame reconstruction names operands var_/arg_, renameable across every reference, with imports resolved to their symbols.
↗ full size
IDA-style steering — make / undefine functions, undefine code, analyze-from — with recovery inconsistencies flagged inline ([!] no clean return).
Pipeline
Recovery starts at the original entry point — the unpacked OEP, not a deep nested VM — carrying a 1:1 machine-state snapshot so the static lifter is always seeded correctly.
A packed, virtualized binary — the untouched input bytes.
Resolve the packer stub and snapshot state at the original entry.
remill raises each reachable instruction to faithful IR.
Passes fold MBA, kill opaque predicates, flatten VM dispatch.
Re-emitted through LIEF — deobfuscated and analyzable.
Current features
The workbench is usable now on real x86-64 PE images — the shipping surface while the devirtualization engine hardens.
var_/arg_ namingRoadmap
The workbench ships today; the engine and the automation layer are the frontier. Dated loosely — direction over deadlines.
Built on
Sigil is research-grade tooling for authorized reverse engineering, hardening toward a release. If you work on hard targets, want to follow along, or think it fits your team, reach out.
sidewinder@sigil.reSigil is intended for reverse engineering you are authorized to perform — your own binaries, security research, and in-scope bug-bounty work. Use it lawfully and within the terms of the targets you analyze.