How caomod2077/deobfuscator-luraph-v15 works
This is a command-line deobfuscator for Roblox Luau protected by Luraph v15. Its principal workflow detects the obfuscator, instruments and runs the script in an offline Luau sandbox to capture execution data, then lifts captured VM protos into structured Luau and polishes the output. It also supports detection-only and trace-only modes. The README documents the broad stages; sampled excerpts are partial, so some orchestration links follow that documentation rather than inspected call sites.
Main entry points: driver.js Pipeline driver · devirt.py Proto devirtualizer · backend.py Backend analysis · harness.js Offline sandbox
Components 19
CLI and routing
- CLI and jobs
deob.js - Luraph detection
src/detect.js - Pipeline driver
src/driver.js
Analysis and capture
- VM mapping
src/vmmap.js - Offline sandbox
src/harness.js - Trace rendering
src/traceout.js
VM reconstruction
- Python bridge
src/devirt_bridge.py - Proto devirtualizer
core/obfuscators/luraph_v15/devirt.py - Lifted IR
core/ir.py - CFG structuring
core/structure.py - Loop recovery
core/loops.py
Output recovery
- Backend analysis
core/backend.py - Variable recovery
core/variables.py - Contextual naming
core/names.py - Luau rendering
core/codegen.py - Source cleanup
src/tidy.js
Other components
- Script user
- Luau runtime
- Recovered Luau
Connections 21
- Script user → CLI and jobs: provides script
- CLI and jobs → Luraph detection: detects type
- CLI and jobs → Pipeline driver: starts job
- Pipeline driver → VM mapping: maps VM
- Pipeline driver → Offline sandbox: runs instrumented script
- VM mapping → Offline sandbox: informs hooks
- Offline sandbox → Luau runtime: executes in
- Offline sandbox → Trace rendering: emits execution data
- Pipeline driver → Python bridge: requests lifting
- Python bridge → Proto devirtualizer: invokes devirtualizer
- Proto devirtualizer → Lifted IR: builds
- Proto devirtualizer → CFG structuring: structures instructions
- CFG structuring → Loop recovery: recovers loops
- Proto devirtualizer → Backend analysis: analyzes lifted code
- Backend analysis → Variable recovery: recovers variables
- Backend analysis → Contextual naming: infers names
- Backend analysis → Luau rendering: renders source
- Pipeline driver → Trace rendering: selects trace mode
- Pipeline driver → Source cleanup: cleans output
- Source cleanup → Recovered Luau: writes source
- Luau rendering → Recovered Luau: produces source