2024 · 预印本

STRIDE:反编译可执行文件中的简单类型识别

STRIDE: Simple Type Recognition In Decompiled Executables

STRIDE 不使用神经网络模型,而是预测反编译器输出中变量的名称和类型。它基于带已知标签的训练反编译结果构建数据库,将每处变量出现位置紧邻左右两侧的词元序列(N-gram,N 取 2 至 60)映射到出现频率最高的五个名称或类型。变量占位名会被规范化,类似地址的词元和较大的常量会被分桶,以便 N-gram 能够匹配。预测时,它在每处出现位置的两侧查找最长的匹配 N-gram,按匹配的特异程度为返回的标签打分,并在整个函数内累加得分。原型约有 1,000 行 Python 代码,在 CPU 上运行。作者报告,在训练集中未出现的 DIRT 函数上,类型恢复准确率为 66.4%(启用束搜索的 DIRTY 为 52.3%),重命名准确率为 56.2%(VarBERT 的已报告结果为 51.3%)。在 16 个 VarCorpus 划分中,其重命名准确率在 11 个划分上高于 VarBERT,平均高 1.55 个百分点。预测在 CPU 上每个函数耗时 8.2 毫秒,而 VarBERT 在 NVIDIA L4 GPU 上为 43.7 毫秒。

研究范围与局限

这是一篇未标明发表场所的 arXiv 预印本;本条目不主张其经过同行评审。STRIDE 依据完全一致的 N-gram 匹配进行分类,因此预测取决于训练数据中出现过的词元序列:它无法模糊匹配,也无法预测训练中未出现的名称或类型;基于某一反编译器词元格式训练的模型预计不能迁移到其他反编译器。结果基于 DIRT、DIRE 与 VarCorpus 三个基准数据集中的反编译器输出。DIRT 使用 GitHub 项目经 GCC -O0 编译后的 Hex-Rays 输出,并以 DWARF 信息生成标签,较早的 DIRE 数据集以类似方式构建;VarCorpus 覆盖以 Hex-Rays 和 Ghidra 在 -O0 至 -O3 下反编译的 Gentoo 软件包。类型恢复只在 DIRT 上评测,且仅覆盖 x86 C/C++ 代码。准确率按完全匹配计算,近义名称也算作错误。约 60% 的 DIRT 测试函数同样出现在训练集中,STRIDE 在这部分依靠记忆达到约 99% 的准确率;训练集中未出现的函数上的结果更具代表性。DIRT 保留了函数名与全局变量名,去除这些标识符后重命名准确率会下降几个百分点。部分基线数据摘自既有论文,并未重新运行。作者在 README 中预计,对包含训练中未出现结构体的自定义闭源二进制文件效果不佳。所审阅的仓库是研究原型,不含反编译器插件或训练好的数据库。

与本合集的关联

补充一个非神经网络、基于序列匹配的反编译变量名称与类型恢复基线,与书目中作为其比较对象、基于 Transformer 的 DIRTY 和 VarBERT 互补。

发表与复核详情

发表载体
arXiv
发表状态
预印本
出版/提交日期
2024 年 7 月 3 日
日期依据
采用 arXiv v1 的 2024-07-03 提交日期,审阅时这是唯一版本。未找到后续正式发表记录,因此不主张预印本之外的出版日期。
arXiv 首次提交
2024 年 7 月 3 日
arXiv
2407.02733
已复核的 arXiv 版本
v1

审阅 arXiv v1(2024-07-03),审阅时这是唯一版本;摘要页没有注释或期刊引用信息,PDF 列出的单位为卡内基梅隆大学及其软件工程研究所。Crossref 书目检索与 OpenAlex 检索只找到该 arXiv 预印本;DBLP 检索接口返回机器人验证页面,无法查询。摘要链接的 hgarrereyn/STRIDE 按其最新提交 ebaab25(2024-07-04)审阅:采用 MIT 许可证,版权归 Harrison Green(2024)。README 说明了 DIRE、DIRT 与 VarCorpus 数据集的转换脚本,这些数据集需另行从 Google Drive、Amazon S3 和 Dropbox 下载;仓库不含训练好的 N-gram 数据库或依赖清单,其常见问题说明尚无反编译器插件。论文指出 N-gram 数据库会占用数 GB 内存。该仓库也出现在自动扫描索引中,其索引记录未作改动。本次未下载数据集,也未运行代码或实验。

来源复核于

本合集仅做来源复核,未重新运行论文实验。请通过原始论文或 BibTeX 引用原作者。

报告条目过时 建议修正翻译

一手来源

  1. https://arxiv.org/abs/2407.02733
  2. https://arxiv.org/pdf/2407.02733v1
  3. README.md GitHub · hgarrereyn/STRIDE · 修订 ebaab25
  4. LICENSE GitHub · hgarrereyn/STRIDE · 修订 ebaab25
  5. stride GitHub · hgarrereyn/STRIDE · 修订 ebaab25