Triton逆向工具学习(一) 工具准备
0x01 前言
某位师傅分析了关于Triton的文档和对于自动化逆向的一些独特见解,我觉得蛮有意思的。所以后续一段时间,我打算深入研究学习对这个二进制工具的使用。
Triton是一个动态二进制分析(Dynamic Binary Analysis, DBA)的库,可以用它完成程序分析、自动化逆向、模拟代码、污点分析等一系列功能的使用或者进行相关功能的工具设计。
Triton is a dynamic binary analysis library. It provides internal components that allow you to build your program analysis tools, automate reverse engineering, perform software verification or just emulate code.
其github的地址为https://github.com/JonathanSalwan/Triton,可以自行参考。
0x02 构建和安装
由于这些二进制工具还在积极地开发过程中,所以下面的安装只是对于当前时间有效的(2025.10.02),不过现在借助AI的帮助,根据报错信息调整,环境准备应该也不会是难事。
1. pip安装
用pip可以非常简单地安装Triton的Python绑定,然后用python调用这个库
1 | pip install triton-library |
warning
注意包名是triton-library而不是triton,后者会安装GPU编程的OpenAI Triton。
2. 源码构建
克隆仓库
1
git clone https://github.com/JonathanSalwan/Triton.git
创建构建目录
1
2cd Triton
mkdir build && cd build依赖项安装
当前依赖项的情况是
1
2
3
4
5
6* libcapstone >= 5.0.x https://github.com/capstone-engine/capstone
* libboost (optional) >= 1.68
* libpython (optional) >= 3.6
* libz3 (optional) >= 4.6.0 https://github.com/Z3Prover/z3
* libbitwuzla (optional) >= 0.4.x https://github.com/bitwuzla/bitwuzla
* llvm (optional) >= 12可选的基本上boost用不上,bitwuzla和z3二选一(都要也可以),llvm也带一个后面优化用
1
2
3
4
5
6
7sudo apt update && sudo apt upgrade -y
# capstone是必备项,z3是用于符号执行和约束求解的后端
sudo apt install libz3 libpython
# [WARNING]这个建议去capstone的github下找5.0.x版本的deb,目前Triton还没做capstone6版本的支持
sudo apt install libcapstone-dev # 不建议
# LLVM 由于后面make报错,所以基本可能需要的我全安装了
sudo apt install clang-format clang-tidy clang-tools clang clangd libc++-dev libc++1 libc++abi-dev libc++abi1 libclang-dev libclang1 liblldb-dev libllvm-ocaml-dev libomp-dev libomp5 lld lldb llvm-dev llvm-runtime llvm python3-clang配置和编译
1
2
3
4
5
6
7# 基本配置
cmake ..
# 如果需要启用可选功能的话可以使用
cmake .. -DLLVM_INTERFACE=ON -DCMAKE_PREFIX_PATH=$(llvm-config --prefix) -DBITWUZLA_INTERFACE=OFF
# 编译
make -j$(nproc)安装
1
sudo make install
3. 自动补全增强
在clone的目录下的doc/autocomplete中,用python运行generate_autocomplete.py会生成triton_autocomplete目录,其中有triton.pyi文件,可以将其放入Python环境的site-packages目录下实现增强。
0x03 安装检验
用python执行下面的这段代码来确定是否成功安装了triton
1 | from triton import * |