{
  "added_at": "2026-11-09",
  "additional_evidence_urls": [
    "https://github.com/lifting-bits/anvill/blob/9948d26cd993952d6010a59f27a198cbe3c79c1d/bin/Decompile/Main.cpp",
    "https://github.com/lifting-bits/anvill/blob/9948d26cd993952d6010a59f27a198cbe3c79c1d/data_specifications/specification.proto",
    "https://github.com/lifting-bits/anvill/blob/9948d26cd993952d6010a59f27a198cbe3c79c1d/docs/SpecificationFormat.md",
    "https://github.com/lifting-bits/anvill/tree/9948d26cd993952d6010a59f27a198cbe3c79c1d/lib/Passes",
    "https://github.com/lifting-bits/anvill/tree/9948d26cd993952d6010a59f27a198cbe3c79c1d/lib/Arch",
    "https://github.com/lifting-bits/anvill/tree/9948d26cd993952d6010a59f27a198cbe3c79c1d/python/anvill",
    "https://github.com/lifting-bits/anvill/blob/9948d26cd993952d6010a59f27a198cbe3c79c1d/CMakeLists.txt",
    "https://github.com/lifting-bits/anvill/blob/9948d26cd993952d6010a59f27a198cbe3c79c1d/Dockerfile",
    "https://github.com/lifting-bits/anvill/blob/9948d26cd993952d6010a59f27a198cbe3c79c1d/.github/workflows/build.yml",
    "https://github.com/lifting-bits/anvill/blob/9948d26cd993952d6010a59f27a198cbe3c79c1d/ci/install_binja.sh",
    "https://github.com/lifting-bits/anvill/blob/9948d26cd993952d6010a59f27a198cbe3c79c1d/LICENSE",
    "https://github.com/lifting-bits/anvill/releases/tag/v0.1.39",
    "https://github.com/lifting-bits/anvill/tree/8662cdcca6e63ea10322928a89a0168a6a4270e9",
    "https://github.com/lifting-bits/rellic/blob/370abaad86ae5adad82f85b81aff14557462b7f2/README.md"
  ],
  "category": "binary-libraries",
  "description_en": "Trail of Bits machine-code lifter built on Remill that aims to produce high-quality LLVM bitcode, close to what Clang would emit for a semantically equivalent C function, for Rellic to decompile further into C. Its anvill-decompile-spec tool lifts the functions and global variables described in a Protobuf specification of a binary's low-level ABI information into LLVM IR or bitcode, and LLVM passes lower Remill intrinsics and recover stack frames, jump tables and switches. The README says the main branch reads specifications from an in-development, closed-source Ghidra plugin, while open-source Binary Ninja spec generation remains at the binja-final-version tag.",
  "description_zh": "Trail of Bits 基于 Remill 开发的机器码提升器，目标是生成高质量的 LLVM bitcode，使其接近 Clang 编译语义等价的 C 函数时产生的结果，再交由 Rellic 进一步反编译为 C。其 anvill-decompile-spec 工具读取描述二进制底层 ABI 信息的 Protobuf 规格文件，把其中的函数和全局变量提升为 LLVM IR 或 bitcode；一组 LLVM 遍负责降级 Remill 内建函数，并恢复栈帧、跳转表和 switch 结构。README 称 main 分支读取的规格文件由一个仍在开发、尚未开源的 Ghidra 插件生成，开源的 Binary Ninja 规格生成脚本则保留在 binja-final-version 标签中。",
  "entry_url": "https://awesomerea.org/resources/anvill/",
  "entry_url_zh": "https://awesomerea.org/zh/resources/anvill/",
  "evidence_url": "https://github.com/lifting-bits/anvill/blob/9948d26cd993952d6010a59f27a198cbe3c79c1d/README.md",
  "group": "tools",
  "id": "anvill",
  "json_url": "https://awesomerea.org/resources/anvill/record.json",
  "kind": "tool",
  "markdown_url": "https://awesomerea.org/resources/anvill/index.md",
  "markdown_url_zh": "https://awesomerea.org/zh/resources/anvill/index.md",
  "name": "Anvill",
  "name_zh": "Anvill 机器码到 LLVM bitcode 提升器",
  "record_type": "resource",
  "relationship": "foundation",
  "requirements": [
    "The latest GitHub release is v0.1.39 (2021-02-22); later tags reach v0.2.1. The pinned master commit is six commits ahead of that tag, with its last code change dated 2022-12-06.",
    "Linux was tested on Ubuntu 20.04. CMakeLists.txt requires CMake 3.19; the README also lists Clang 12+, Remill, Python 3.9 and Ghidra. CI builds with LLVM 14 and 15 on Ubuntu 20.04 and macOS 11.",
    "anvill-decompile-spec requires a Protobuf specification of functions, globals and memory ranges. The README directs open-source users to the binja-final-version tag; CI installs a Ghidra spec generator from a private repository. Supported calling conventions include x86, x86-64, AArch32, AArch64 and SPARC.",
    "CI uses encrypted Binary Ninja archives and passphrase-protected AMP challenge binaries for integration tests.",
    "License: AGPL-3.0. Enable unit tests with -DANVILL_ENABLE_TESTS=true."
  ],
  "requirements_zh": [
    "最新 GitHub 发行版为 v0.1.39（2021-02-22）；后续标签达到 v0.2.1。固定的 master 提交比该标签多六个提交，最后一次代码改动日期为 2022-12-06。",
    "Linux 曾在 Ubuntu 20.04 上测试。CMakeLists.txt 要求 CMake 3.19；README 还列出 Clang 12+、Remill、Python 3.9 与 Ghidra。CI 在 Ubuntu 20.04 和 macOS 11 上使用 LLVM 14 与 15 构建。",
    "anvill-decompile-spec 需要描述函数、全局变量与内存区域的 Protobuf 规格文件。README 建议开源用户使用 binja-final-version 标签；CI 从私有仓库安装 Ghidra 规格生成器。支持的调用约定包括 x86、x86-64、AArch32、AArch64 与 SPARC。",
    "CI 使用加密的 Binary Ninja 归档及受口令保护的 AMP 挑战二进制进行集成测试。",
    "许可证：AGPL-3.0。使用 -DANVILL_ENABLE_TESTS=true 启用单元测试。"
  ],
  "targets": [
    "binary"
  ],
  "url": "https://github.com/lifting-bits/anvill",
  "verification": "source-reviewed",
  "verified_at": "2026-10-27"
}
