2022 · 会议论文
jTrans:面向二进制代码相似性检测的跳转感知 Transformer
jTrans: Jump-Aware Transformer for Binary Code Similarity Detection
jTrans 使用 BERT 风格的 Transformer 为二进制函数生成嵌入,以支持相似性检索。其跳转感知表示让直接跳转的操作数词元与跳转目标的位置嵌入共享参数,从而无需单独的图神经网络即可将控制流引入指令序列。模型先以掩码语言建模和跳转目标预测进行预训练,再以余弦三元组目标在同一源码不同优化级别编译出的函数上微调。论文还发布了 BinaryCorp,它由 gcc 与 g++ 编译 Arch Linux 官方仓库及 AUR 中的 C/C++ 软件包构建而成。
研究范围与局限
模型仅在单一架构上训练(据论文讨论部分为 x86),未评估跨架构检索。方法只编码直接跳转,间接跳转目标不在研究范围内。反汇编与函数提取依赖 IDA Pro 7.5,上游的边界识别错误未被衡量。BinaryCorp 在 O0–O3 与 Os 之间配对 gcc/g++ 构建结果,并按项目划分训练集与测试集;它不涵盖混淆或其他编译器,只有漏洞检索实验额外加入 clang 变体。作者报告在 BinaryCorp-26M、候选池规模为 10,000 时,平均 Recall@1 为 62.5%,最佳基线为 32.0%;随着候选池增大,准确率仍会下降,作者也指出真实场景的候选池更大。漏洞检索实验使用八个 CVE,每个有十个变体。基线来自 2022 年,其中 Asm2Vec 与 OrderMatters 为重新实现,因此该比较不能确立当前排名。相似性排序只给出候选匹配,并不恢复源码、名称或类型。
与本合集的关联
补充基于学习的二进制代码相似性检索。它可辅助逆向工程中的函数匹配、库识别与已知漏洞检索,与反编译和符号恢复研究互补。
发表与复核详情
- 发表载体
- ACM ISSTA 2022
- 发表状态
- 会议论文
- 出版/提交日期
- 2022 年 7 月 18 日
- 日期依据
- ACM 提交的 Crossref 元数据将 published/纸质与在线出版日期均记为 2022-07-18;该日期取自出版方元数据,而非 7 月 18–22 日的会议日期。
- arXiv 首次提交
- 2022 年 5 月 25 日
- arXiv
- 2205.12713
- 已复核的 arXiv 版本
- v1
- DOI
- 10.1145/3533767.3534367
arXiv 摘要页将论文标题写作“jTrans: Jump-Aware Transformer for Binary Code Similarity”;其唯一版本 v1 的 PDF 使用完整的 ISSTA 标题、ACM 引用格式及 DOI,备注也注明 ISSTA 2022。Crossref 与 PDF 一致给出八位作者顺序、DOI、第 1–13 页及 CC BY 4.0 许可。所审阅的 2025-04-10 提交中,README 声明 MIT 许可,并列出 Linux、Python 3.8+、PyTorch 1.10+、CUDA 10.2+,以及用于数据集处理的 IDA Pro 7.5+。训练好的模型、实验文件、处理后的 BinaryCorp 及其原始二进制托管在作者实验室的 GitHub 之外的文件服务器上,其可用性与代码仓库无关。发布的数据加载代码将每个函数截断为 512 个词元位置。BinaryCorp 中的软件包各自保留原有许可。本次除论文与仓库文件外未下载其他内容,也未运行代码或实验。
来源复核于
本合集仅做来源复核,未重新运行论文实验。请通过原始论文或 BibTeX 引用原作者。
一手来源
- https://dl.acm.org/doi/10.1145/3533767.3534367
- https://api.crossref.org/works/10.1145/3533767.3534367
- https://arxiv.org/abs/2205.12713
- https://arxiv.org/pdf/2205.12713v1
- README.md GitHub · vul337/jTrans · 修订 1d40515
- LICENSE GitHub · vul337/jTrans · 修订 1d40515
- datautils/README.md GitHub · vul337/jTrans · 修订 1d40515
- data.py GitHub · vul337/jTrans · 修订 1d40515
- finetune.py GitHub · vul337/jTrans · 修订 1d40515