关于FOC框架的学术研究报告:基于大语言模型分析脱壳二进制文件中的密码学函数
一、 研究作者、机构及发表信息
本研究的主要作者包括Xiuwei Shang(中国科学技术大学)、Guoqiang Chen(奇安信科技集团)、Shaoyin Cheng(中国科学技术大学)、Shikai Guo(大连海事大学)、Yanming Zhang(中国科学技术大学)、Weiming Zhang(中国科学技术大学)以及Nenghai Yu(中国科学技术大学)。研究团队主要来自中国科学技术大学、奇安信集团研究院和大连海事大学。该研究成果以题为“FOC: figure out the cryptographic functions in stripped binaries with LLMs”的论文形式,发表于期刊《ACM Transactions on Software Engineering and Methodology》(TOSEM)第35卷第1期,在线发表日期为2025年4月22日,正式出版于2025年12月。论文可通过ACM数字图书馆获取(DOI: 10.1145/3731449)。
二、 学术背景与研究目标
本研究属于软件安全与逆向工程交叉领域,具体聚焦于二进制代码分析,特别是对“脱壳”(Stripped)二进制文件中密码学函数的行为分析。在恶意软件分析、遗留代码审查、加密标准合规性验证等软件安全任务中,分析二进制文件中的密码相关代码是常见且关键的环节。然而,这项任务面临巨大挑战:首先,密码算法本身逻辑复杂度极高,远超普通代码;其次,二进制文件在发布前通常会移除所有符号信息(如函数名、变量名),这使得理解和分析其功能变得极其困难。尽管现有反编译器(如IDA Pro)可以将二进制代码转换为类C的伪代码,但仍缺乏足够的人类可读语义信息。
现有技术路线存在明显局限:1) 面向密码学的启发式方法:主要依赖常量、统计特征或结构(如数据流图)的模式匹配来识别密码算法基元类别。这类方法泛化能力差,易受编译优化、常量隐藏等因素影响,且只能提供有限的类别信息,无法深入理解复杂代码的语义。2) 二进制代码摘要:旨在为二进制代码生成自然语言描述,但现有模型并非专为密码学领域设计,且缺乏公开的高质量密码学二进制数据集和自动化标注方法。3) 二进制代码相似性检测:通过生成函数嵌入向量来衡量代码相似性,可用于检索已知的密码学实现。然而,现有方法对密码学领域的关注有限,其有效性受限于已知函数库的覆盖范围,且生成式模型难以反映代码的微小变动(如漏洞补丁)。
为此,本研究提出核心研究目标:开发一个名为“FOC”(Figure Out the Cryptographic functions)的新型框架,旨在利用大语言模型来解决脱壳二进制文件中密码学函数的分析与识别难题。该框架的具体目标包括:构建一个全面的密码学二进制数据集并创建自动化语义标注方法;开发一个能够生成人类可读语义摘要的二进制大语言模型;以及构建一个能够敏感捕捉代码变化、用于检索相似实现的代码相似性检测模型,以弥补生成式模型的不足。
三、 详细研究流程
本研究的工作流程主要分为三个核心阶段:数据集构建、模型设计与训练、以及综合实验评估。
第一阶段:密码学二进制数据集的构建与语义标注自动化 为克服公开数据集缺乏的挑战(C1),研究团队从OpenSSL、BoringSSL、LibreSSL、Tongsuo、mbedTLS等14个主流开源密码学项目(C语言编写)中收集源代码。为确保数据的多样性和现实性,他们进行了大规模的交叉编译:使用GCC和Clang两种编译器,每种搭配O0-O3四种优化等级,针对x86(32/64位)、ARM(32/64位)、MIPS(32/64位)六种目标架构进行编译,并对生成的二进制文件进行脱壳处理。随后,使用IDA Pro反编译器提取函数的伪代码。通过MD5和MinHash技术对函数进行去重,最终构建了一个包含超过185万个唯一函数的综合性密码学二进制数据集。
为解决高质量语义标签创建的难题(C2),研究团队设计了一套自动化流程。传统方法(如直接使用源代码中的函数名或注释)不可靠,因为函数名过于简略,而注释覆盖率低、格式不一且质量参差不齐。受LLM在数据标注任务中展现的潜力启发,他们利用ChatGPT为每个函数的源代码元数据(包括函数签名、参数、返回值类型、可能存在的注释)自动生成一句话的语义摘要。为确保生成摘要与密码学事实的一致性,团队设计了一个基于关键词的判别器。该判别器定义了密码学基元类别(如AES、RSA)、分组加密模式(如CBC、CTR)和认证加密模式(如GCM、CCM)三大类别及其多种常见书写形式。通过全词匹配,判别器会检查生成的摘要中提取的类别关键词是否与从源代码中提取的一致。超过85%的生成摘要通过了此一致性检查,且与人工编写注释的文本一致性(ROUGE-L)达到43.55%,证明了自动化标注方法的有效性。
第二阶段:FOC框架模型的设计与训练 FOC框架包含两个紧密协作的核心组件:FOC-BinLLM(生成式模型)和FOC-Sim(相似性检测模型)。 1. FOC-BinLLM(二进制大语言模型):该组件旨在理解并总结脱壳二进制代码的语义。研究采用编码器-解码器架构的Transformer模型,并以专门为源代码理解和生成设计的CodeT5+模型(220M参数)作为基础进行初始化。为使模型适应二进制代码分析,研究设计了多任务与冻结解码器训练策略。训练包含三个任务: * 任务1(函数名预测):输入二进制伪代码,预测其在源代码中的函数名。这是一个序列到序列的生成任务,帮助模型建立代码结构与简洁语义的关联。 * 任务2(二进制代码摘要):输入二进制伪代码,生成更详细、全面的一句话功能摘要。这是主要任务,旨在提供超越函数名的深层语义。 * 任务3(二进制-源代码对比学习):仅使用编码器部分,通过对比损失函数,拉近同一函数在源代码和二进制代码两种形式下的语义嵌入向量之间的距离,促使模型快速适应二进制代码领域。 为高效训练,研究采用了“冻结解码器”策略:由于解码器对复杂的因果生成任务至关重要,需要更精细的训练,因此模型被初始化为一个“深解码器-浅编码器”(12层解码器,12层编码器)的结构。在训练时,冻结解码器参数,只训练编码器和交叉注意力层,这大幅减少了可训练参数量(仅38.11%),提升了训练效率。
第三阶段:实验评估与结果分析 研究设置了四个研究问题(RQs)进行全面评估: * RQ1:评估FOC-BinLLM在密码学二进制代码摘要任务上的性能。 * RQ2:评估FOC-Sim在二进制代码相似性检测(BCSD)任务上的性能,包括通用数据集和密码学数据集。 * RQ3:评估FOC框架在真实场景(如密码学病毒分析、1-day漏洞检测)中的实用能力。 * RQ4:通过消融实验分析FOC各组成部分的贡献。
实验在配备NVIDIA RTX 3090 GPU集群的环境中进行。评估指标方面,代码摘要任务采用BLEU-4、METEOR和ROUGE-L;BCSD任务采用AUC(用于一对一比较)以及Recall@K和MRR@K(用于一对多检索)。
四、 主要研究结果
1. 密码学二进制代码摘要性能卓越(RQ1): 在密码学测试集上,FOC-BinLLM在ROUGE-L、BLEU-4和METEOR三个指标上分别达到了41.34%、14.47%和40.20%的得分,显著超越了所有基线模型。与同为220M参数、专为二进制摘要设计的Bint5和Hext5相比,FOC-BinLLM平均领先约24%。更值得注意的是,相较于参数量大得多的通用大语言模型(如8x7B参数的Mixtral和ChatGPT-3.5-turbo),FOC-BinLLM仍能取得平均约3-6个百分点的性能提升,这凸显了领域定制化训练的价值。在函数名预测任务上,FOC-BinLLM的F1分数达到32.6%,也显著优于专门的基线模型SymLM和XFL。此外,利用模型生成的摘要和关键词判别器,FOC-BinLLM在密码学算法基元识别任务中,成功识别出测试二进制文件中70个实例中的46个,远超基于常量签名的传统工具(如FindCrypt2仅识别出14个),尽管存在少量误报(5个),但其识别能力更为全面。
2. 二进制代码相似性检测表现出色(RQ2): * 通用数据集:在Cisco发布的通用BCSD基准测试中,FOC-Sim在最具挑战性的跨编译器、跨优化、跨架构、跨位数(XM)子任务上,一对一比较的AUC达到99%,一对多检索的Recall@1和Recall@10分别达到78%和95%,全面大幅领先Gemini、GMN等现有最优方法,显示出强大的跨平台和跨编译选项的稳定性。 * 密码学数据集:在自建的密码学数据集上,FOC-Sim的优势更加明显。在XM子任务上,其一键检索准确率(Recall@1)高达91.0%,而次优的基线模型RCfg2vec仅为69.4%。这证明了融合语义、结构及领域特征的有效性,使其特别适合在密码学函数库中进行精确检索。
3. 在真实场景中验证实用价值(RQ3): 研究展示了FOC框架在现实安全任务中的应用潜力。通过分析包含加密功能的真实病毒样本,FOC-BinLLM生成的摘要帮助分析师快速理解了其加密例程的行为。同时,利用FOC-Sim,研究成功在现实世界的固件中检索到了与已知存在漏洞的密码学函数(如受Heartbleed漏洞影响的函数)相似的实现,从而辅助进行1-day漏洞检测。这证明了FOC不仅具备优异的学术指标,还能有效支持实际的安全分析工作。
4. 消融实验验证组件贡献(RQ4): 消融研究表明,FOC-Sim的优异性能源于其多特征融合的设计。移除语义编码器或密码学特征都会导致性能显著下降,尤其是在Recall@1指标上。这证实了从大语言模型中获取的高级语义信息,与传统的控制流图结构和领域特定特征相结合,对于精确的密码学代码相似性检测至关重要。
五、 研究结论与价值
本研究成功提出并实现了FOC框架,这是首个利用大语言模型系统化分析脱壳二进制文件中密码学函数的解决方案。主要结论包括: 1. 方法创新性:FOC开创性地将大语言模型引入二进制密码学分析领域,通过FOC-BinLLM提供人类可读的深度语义摘要,通过FOC-Sim提供对代码变化敏感的相似性检索能力,二者协同为逆向工程师提供了互补且强大的分析工具。 2. 数据基础贡献:研究构建并开源了一个大规模、多样化的密码学二进制数据集,并设计了可靠的自动化语义标注流程,为后续该领域的研究奠定了宝贵的数据基础。 3. 性能突破:实验证明,FOC框架在代码摘要和相似性检测两大核心任务上均取得了突破性的性能,显著超越了现有最先进的方法和通用大语言模型。 4. 实用价值显著:框架在恶意软件分析和漏洞检测等真实场景中的成功应用,证明了其不仅具有学术价值,更能直接赋能软件安全实践。
六、 研究亮点
七、 其他有价值内容
研究团队已公开了FOC的代码和收集的数据集(GitHub仓库),以促进该领域的进一步研究。论文结构清晰,对研究挑战(C1-C3)、现有技术对比、方法动机、实验设计等进行了详尽阐述,体现了严谨的学术风格。同时,论文也指出了生成式模型在反映细微代码变化方面的固有局限,并明确通过FOC-Sim组件来针对性弥补,这种对自身方法局限性的清醒认识和解决方案,增强了研究的可信度。