Devi
Devirtualize Virtual Calls
Install / Use
/learn @murx-/DeviREADME
devi - DEvirtualize VIrtual calls
Devi is a simple tool that uses runtime information to devirtualize virtual calls in c++ binaries.
Usage
Devi consits of two components, one for dynamic analysis (DBI) and one for static analysis (disassembler).
Running the Frida Tracer
Minimal Command Line
Spawn process:
python devi_frida.py -m <module_name> -o <JSON_output> -- <software_to_trace> <arguments for binary>
Attach to process:
python devi_frida.py -m <module_name> -s <sysmbol_to_hook> -o <JSON_output> -p <pid_of_target>
Disassembler Plugin:
For Binary Ninja see https://github.com/murx-/devi_binja for IDA follow along here.
Copy devi_ida.py to your IDA plugin folder or load the script via File -> Script file... and load devi_ida.py.
Once devi is loaded you can load the JSON file containing the virtual calls via File -> Load File -> Load Virtual Calls.
Minimal Example
python devi_frida.py -m main -o virtual_calls.json -- tests/HelloWorld myArgs
Load JSON file into IDA Pro.
Disassembly
Before:

After:
Xrefs
Before:
After:
Xref Graph
Before:
After:
Supported Frameworks
Supported DBIs:
- Frida
Supported Disassemblers:
- IDA
- Binary Ninja
Misc
This tool is heavily inspired by Ablation.
Related Skills
node-connect
343.3kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
92.1kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
343.3kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
343.3kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
