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
    2
    cd 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
    7
    sudo 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
2
3
4
5
6
from triton import *
try:
ctx = TritonContext(ARCH.X86_64)
print("Triton context created successfully!")
except Exception as e:
print(f"An error occurred: {e}")