2024 · 会议论文

CLAP:借助自然语言监督学习可迁移的二进制代码表示

CLAP: Learning Transferable Binary Code Representations with Natural Language Supervision

CLAP(对比式语言—汇编预训练)学习与自然语言解释对齐的汇编函数嵌入。其数据引擎以 GCC 和 Clang 在 O0–O3 与 Os 下编译 Ubuntu 的 C/C++ 软件包,由 GPT-3.5 为约 260 万个对应的源码函数生成解释,再用其中一半解释微调 Vicuna-13B“影子模型”为更多代码生成说明,最终得到 1.95 亿对汇编—解释数据。采用地址重定基、WordPiece 分词与跳转感知嵌入的 1.1 亿参数汇编编码器先在汇编上预训练,再与文本编码器进行对比对齐。所得嵌入可通过将代码与文本提示匹配来实现零样本分类。在候选池为 10,000 个函数的 BinaryCorp-3M 相似性检索中,零样本 CLAP 的平均 recall@1 为 0.836,经微调的 jTrans 为 0.571。

研究范围与局限

训练用的解释由 GPT-3.5 和经微调的 Vicuna 模型依据源码生成,并非人工撰写;五位专家为每个模型的 50 条解释打分,多数被评为可接受。作者指出,仅使用 Ubuntu 构建环境以及采用 GPT-3.5 生成解释都可能带来偏差。函数由 IDA Pro 7.6 反汇编,少于三个基本块的函数被排除。相似性结果使用 BinaryCorp-3M 中不同优化级别的函数对,各基线采用线性探测,jTrans 另做了完整微调,CLAP 则未经微调;密码算法识别(17 种算法,约 7 万个依据函数名与软件包元数据标注的函数)和协议分类(18 种类型)使用作者从 Ubuntu 软件包构建的数据集,其中微调后的 CLAP 超过基线,零样本 CLAP 在密码算法识别上则略逊于最佳基线。恶意软件与排序算法结果仅为个案研究。训练使用 32 块 A100 GPU。CLAP 输出的是嵌入和标签分数,既不是反编译器,也不是恶意软件检测器。

与本合集的关联

补充与自然语言对齐的汇编表示学习方法,可在二进制分析中支持零样本和少样本函数标注及相似性检索,与 jTrans 以及基于大语言模型的反编译和摘要研究互补。

发表与复核详情

发表载体
ACM ISSTA 2024
发表状态
会议论文
出版/提交日期
2024 年 9 月 11 日
日期依据
ACM 提交的 Crossref 元数据将纸质与在线出版日期均记为 2024-09-11;本条目不以 ISSTA 2024 于 9 月 16–20 日举行的会议日期或 arXiv 日期替代该日期。
arXiv 首次提交
2024 年 2 月 26 日
arXiv
2402.16928
已复核的 arXiv 版本
v1
DOI
10.1145/3650212.3652145

Crossref 记录该文为 ISSTA '24 论文集文章,页码 503–515,许可证为 CC BY-NC-SA 4.0;十位作者顺序与 arXiv 一致。ACM 文章页面拒绝自动访问,因此出版信息以 Crossref 为准,所审阅的文本是唯一版本 arXiv v1(2024-02-26),其页眉带有 ISSTA 2024 标识及占位 DOI。表 1 给出零样本 CLAP 的平均 recall@1 为 0.836,引言则写作 83.3%。论文链接 Hustcw/CLAP。在所审阅的 2024-09-28 提交中,仓库没有许可证文件,包含案例研究笔记本、冒泡排序、SHA-3 及一个以 VirusTotal 哈希标识的恶意样本的 IDA 数据库与重定基汇编、提示词文件、人工评估截图和 IDA 处理脚本,但不含训练代码或 1.95 亿对数据集。README 链接 Hugging Face 模型 hustcw/clap-asm 与 hustcw/clap-text,其模型卡声明 MIT 许可证,加载时需启用 trust_remote_code。本次未下载模型,也未运行任何内容。

来源复核于

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

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

一手来源

  1. https://dl.acm.org/doi/10.1145/3650212.3652145
  2. https://api.crossref.org/works/10.1145/3650212.3652145
  3. https://arxiv.org/abs/2402.16928
  4. https://arxiv.org/pdf/2402.16928v1
  5. https://github.com/Hustcw/CLAP/tree/18e38ded87bdf49e3f7eeb87c0329d1ca9f6a21b
  6. README.md GitHub · Hustcw/CLAP · 修订 18e38de
  7. https://huggingface.co/hustcw/clap-asm/blob/620f4beba2edce172e8f35e263399716494950c9/README.md
  8. https://huggingface.co/hustcw/clap-text/blob/3c4bfe1a936fd9f9140892c4d1d813e4a23301f8/README.md