工具
Triton 动态二进制分析库
面向 x86、x86-64、ARM32、AArch64 和 RISC-V 32/64 代码动态二进制分析的 C++ 库,提供 Python 绑定。调用方逐条处理指令,并可设置具体的寄存器和内存值;Triton 依据每条指令的语义构建符号表达式、进行污点跟踪,并通过 Z3 或 Bitwuzla 求解路径约束。它还能合成与化简表达式,并将其提升为 LLVM IR 或 Z3 表达式后再转换回来,可用于构建分析工具、自动化逆向工程、软件验证或模拟执行代码。
使用条件与局限
- README 称 Triton 是业余维护的项目,未必完全可靠。GitHub 上最新的发布版本是 2022-02-09 的 v0.9,且仅提供 Windows 构建;PyPI 上的 triton-library 1.0.0rc4 首次上传于 2024-05-22,此后陆续补充 wheel 至 2026-02-23,提供面向 x86_64 Linux(manylinux 2.31/2.34)、macOS 12 和 Windows 的 CPython 3.8–3.14 wheel。所审阅的 master 分支提交声明版本为 1.0,dev-v1.0 分支领先 22 个提交。
- 从源码构建使用 CMake 3.20+,并需要 Capstone 5+。Z3 4.6+ 是默认求解器;Bitwuzla 0.4+、用于提升的 LLVM 12+、Boost 1.68+ 以及用于 Python 绑定的 libpython 3.6+ 均为可选,其中 LLVM 和 Bitwuzla 默认不启用。README 还介绍了 Windows 构建以及由项目外部维护的 vcpkg 移植。
- README 示例针对调用方设置的寄存器处理原始指令字节;部分随附示例自行用 LIEF 加载可执行文件并钩住 libc 函数,示例中还包括附带题目二进制的 CTF 解题记录。CTest 运行 Python 单元测试,以及按架构将 Triton 语义与 Unicorn 模拟器对照的脚本;x86 脚本注明 Unicorn 2.1.1 不支持部分被测指令。
- 采用 Apache-2.0 许可;Capstone、Z3、Bitwuzla、LLVM 和 Boost 沿用各自的许可证。符号分析结果只描述已执行的指令和已建模的状态。本次未分析任何二进制。
关于此条目
- 类型
- 工具
- 类别
- 二进制分析库
- 关联
- 基础工具
- 目标
- 二进制
来源复核于
说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。
一手来源
- README.md GitHub · JonathanSalwan/Triton · 修订 bc84cf7
- README.md#L102-L130 GitHub · JonathanSalwan/Triton · 修订 bc84cf7
- CMakeLists.txt#L9-L38 GitHub · JonathanSalwan/Triton · 修订 bc84cf7
- src/testers/CMakeLists.txt GitHub · JonathanSalwan/Triton · 修订 bc84cf7
- src/testers/x86/unicorn_test_x86.py#L19-L21 GitHub · JonathanSalwan/Triton · 修订 bc84cf7
- src/examples/python GitHub · JonathanSalwan/Triton · 修订 bc84cf7
- LICENSE.txt GitHub · JonathanSalwan/Triton · 修订 bc84cf7
- https://github.com/JonathanSalwan/Triton/releases/tag/v0.9
- https://pypi.org/project/triton-library/1.0.0rc4/