Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
xtride — 基于N-gram的二进制类型恢复工具,从反编译代码中恢复结构和函数签名,具有高吞吐量和可操作的置信度分数,适用于自动化流水线。 | Kitploit
工具/GitHubGitHub/pr0me/xtride
静态分析逆向工程调试器二进制分析机器学习论文与研究学习与教育固件分析
GitHubpr0me/xtride

xtride

基于N-gram的二进制类型恢复工具,从反编译代码中恢复结构和函数签名,具有高吞吐量和可操作的置信度分数,适用于自动化流水线。

查看仓库
2611个月前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

XTRIDE:基于N-gram的实用类型恢复

介绍

xtride paper 我们提出了XTRIDE,一种改进的基于n-gram(参见STRIDE)的二进制类型恢复方法,专注于实用性:高度优化的吞吐量和可操作的置信度得分使其能够部署到自动化流水线中。与结构恢复领域的最先进技术相比,我们的方法在实现可比性能的同时,速度提升了70至2300倍。




构建说明

位于 ./bin 中的 CLI 工具需要安装 hdf5 的 1.8.4 或更高版本的库(根据 crate 的文档)。 使用最新版本在 MacOS 上构建会失败,我们建议安装 hdf5 v1.10,例如使用

root@kitploit:~
brew install [email protected]

如何使用 CLI 工具

  1. 创建标记化的数据集,格式见数据集准备。
  2. 创建数据集划分
    root@kitploit:~
    cargo run --release -- create-dataset -i ../new_dataset/ -o ./
    
  3. 构建词表
    root@kitploit:~
    cargo run --release -- build-vocab ./xtride_plus_train.jsonl xtride_plus.vocab -t type
    
  4. 构建 n = {2, 4, 8, 12, 48} 的 n-gram 数据库(在 bin/src/db_creation.rs 中指定)。
    root@kitploit:~
    cargo run --release -- build-all-dbs -t type -k 5 --flanking -o xtride_plus_dbs/ ./xtride_plus_train.jsonl xtride_plus.vocab
    
  5. 在测试集划分上进行评估
    root@kitploit:~
    cargo run --release -- evaluate --threshold-sweep ./xtride_plus_test.jsonl xtride_plus.vocab ./out_xtride.json --flanking --db-dir ./xtride_plus_dbs
    

恢复模式

使用 recover 对单个反编译函数列表(纯文本输入)进行最佳努力类型恢复。

输入要求

  • 每个文件一个函数
  • 推荐使用反编译器风格的符号名称(例如 var*、param*、stack*、iVar*、sub_*)
  • 预测的质量取决于输入样式与训练数据分布之间的对齐程度

基本使用示例

root@kitploit:~
cargo run --release -- recover ./decompiled_function.c \
    --vocab ./xtride_plus.vocab \
    --db-dir ./xtride_plus_dbs \
    --flanking \
    --top-k 5 \

可选标志

  • --fn-vocab <path>: 显式函数词表路径(如果省略,recover 会尝试 <vocab_stem>.fn.vocab)
  • --strip: 启用传统的完整剥离模式(DIRT / STRIDE 向后兼容,请谨慎使用)
  • --threshold <float>: 隐藏低于分数阈值的预测(1.0 表示禁用过滤)
  • --top-k <int>: 每个符号显示的候选数量(默认:5)

输出解释

输出的分数是来自模型管道的置信度风格排名分数。 它们对于相对排序和过滤很有用,但不是校准的概率。 摘要报告了检测到的符号、过滤掉的符号以及没有模型输出的符号。

提供的模型

我们在 ./data 目录中包含了预处理后的数据,用于复现论文中描述的 $XTRIDE_{PLUS}$ 模型。 JSONL 文件可以直接用于提取词表和训练模型(从第3步开始,在 bin/src/db_creation.rs 中选择 16 数据库配置)。 虽然训练数据集包含了来自各种二进制文件的大量数据,但我们要重申,基于 n-gram 的方法的泛化能力是有限的。 我们始终建议根据你计划使用模型的地方,向数据集中添加特定领域的样本。

提供的数据集包含的样本是:

  • 剥离的
  • ELF 二进制文件
  • 从 Ghidra 收集的

尝试对偏离此分布的样本进行推理,很可能导致不可用的预测。

数据集

关于如何提取新数据集的数据或在 DIRT 数据集上进行重新训练和评估的更多信息,请参见数据集准备文档。

反编译器集成

retyper 模块展示了 XTRIDE 类型恢复系统与反编译器深度集成的参考实现。 该功能通过功能标志控制,可以使用 cargo build --features retyper 激活。

我们使用了 Binarly 的 BIAS 框架进行程序分析,该框架作为 VulHunt 的一部分发布。该框架具有表现力的类型系统,与用于将内部恢复的表示提升为伪 C 的 Ghidra 反编译器后端 fork 无缝集成。 我们扩展了这个 fork 及其 ffi,增加了允许直接在反编译器中修改变量类型的接口。 这允许在反编译器上下文中直接应用推断出的类型,包括字段类型等信息的传播。

之前:之后:
without_typestypes_recovered

更多信息和示例请查看我们的博客文章。

一般来说,任何反编译器集成都需要一个从基于文本的预测(来自词表)到工具特定表示的转换层。 DIRT 中使用的格式具有足够的表达能力来实现这一点,但需要递归解析类型(例如结构体)并手动计算偏移量和大小(所有必要信息都在,包括填充注释)。 对于 retyper 模块,词表中的类型(因此也是训练数据集中的类型)需要是序列化的 BIAS 类型。 我们目前不打算发布完整的数据提取和数据集创建流水线,因此将其视为参考实现,而非完整的 PoC。

引用

如果您使用了本仓库和相应论文提供的代码、技术或结果,请按以下方式引用我们的工作:

root@kitploit:~
@inproceedings{Seidel_Practical_Type_Inference_2026,
    author = {Seidel, Lukas and Thomas, Sam L. and Rieck, Konrad},
    title = {{Practical Type Inference: High-Throughput Recovery of Real-World Structures and Function Signatures}},
    series = {The 16th ACM Conference on Data and Application Security and Privacy},
    month = jun,
    year = {2026},
    url = {https://arxiv.org/abs/2603.08225},
}
下载工具