{
  "added_at": "2026-11-06",
  "additional_evidence_urls": [
    "https://github.com/0xgalz/Virtuailor/blob/f5e20a021e31d4fdc40bf7fa531c8038ba240095/Main.py",
    "https://github.com/0xgalz/Virtuailor/blob/f5e20a021e31d4fdc40bf7fa531c8038ba240095/LICENSE"
  ],
  "category": "dynamic-analysis",
  "description_en": "IDAPython tool that reconstructs C++ virtual tables in IDA Pro for 32- and 64-bit Intel and AArch64 code by observing indirect calls while the program runs under IDA's debugger. Its static part finds indirect calls and hooks the assignment of their targets with conditional breakpoints; when those breakpoints hit, the dynamic part creates vtable structures, renames vtables and virtual functions, adds structure offsets to the call instructions and cross-references from each indirect call to the virtual functions it reached, and for AArch64 firmware tries to fix undefined vtables and their functions.",
  "description_zh": "在 IDA Pro 中重建 C++ 虚函数表的 IDAPython 工具，适用于 32/64 位 Intel 和 AArch64 代码，通过在 IDA 调试器中运行程序并观察间接调用来完成。静态部分负责找出间接调用，并用条件断点挂钩其调用目标的赋值；断点命中后，动态部分会创建虚表结构体、重命名虚表和虚函数、为调用指令加上结构体偏移，并从每个间接调用添加指向其实际调用的虚函数的交叉引用；对 AArch64 固件，它还会尝试修复未定义的虚表及相关函数。",
  "entry_url": "https://awesomerea.org/resources/virtuailor/",
  "entry_url_zh": "https://awesomerea.org/zh/resources/virtuailor/",
  "evidence_url": "https://github.com/0xgalz/Virtuailor/blob/f5e20a021e31d4fdc40bf7fa531c8038ba240095/README.md",
  "group": "tools",
  "id": "virtuailor",
  "json_url": "https://awesomerea.org/resources/virtuailor/record.json",
  "kind": "tool",
  "markdown_url": "https://awesomerea.org/resources/virtuailor/index.md",
  "markdown_url_zh": "https://awesomerea.org/zh/resources/virtuailor/index.md",
  "name": "Virtuailor",
  "name_zh": "Virtuailor IDA Pro C++ 虚表重建工具",
  "record_type": "resource",
  "relationship": "foundation",
  "requirement_facets": [
    "prerequisites",
    "limits",
    "license"
  ],
  "requirements": [
    "IDA Pro 7.0 to 7.5: the master branch targets 7.5, and IDA versions older than 7.4 need the beforeIDA-7.4 branch. Run Main.py through File > Run script, ideally after taking an IDB snapshot as the README recommends, then exercise the program under IDA's debugger; AArch64 targets can be debugged through a remote GDB server. The repository has no releases; the reviewed master commit dates from 2020-06-06.",
    "Only vtables used by virtual calls that are hit at run time are reconstructed, and the README says some breakpoints may be missed.",
    "GPL-3.0 per LICENSE."
  ],
  "requirements_zh": [
    "支持 IDA Pro 7.0 至 7.5：master 分支面向 7.5，7.4 以前的 IDA 版本需改用 beforeIDA-7.4 分支。通过 File > Run script 运行 Main.py（README 建议先为 IDB 创建快照），再在 IDA 调试器中运行并操作目标程序；AArch64 目标可通过远程 GDB 服务器调试。仓库没有发布版本，所审阅的 master 分支提交日期为 2020-06-06。",
    "只会重建运行时实际命中的虚调用所用的虚表；README 也提到部分断点可能遗漏。",
    "依 LICENSE 采用 GPL-3.0 许可。"
  ],
  "targets": [
    "binary",
    "firmware"
  ],
  "url": "https://github.com/0xgalz/Virtuailor",
  "verification": "source-reviewed",
  "verified_at": "2026-11-05"
}
