在二进制逆向工程中,函数名是理解程序行为的关键线索,但剥离二进制文件(stripped binaries)中丢失了符号信息。现有方法通常利用静态特征或控制流图进行函数名预测,但忽略了代码执行过程中的动态语义和上下文敏感信息。本文提出 SymLM(Symbol Learning through Language Models with Execution Awareness),一种结合静态分析、动态执行轨迹和语言模型的全新框架,旨在为剥离二进制中的函数自动生成语义丰富的名称。该方法首先通过轻量级二进制插桩收集函数粒度的执行轨迹,提取内存访问模式、系统调用序列等运行时行为特征;同时利用静态反汇编构建上下文敏感的代码嵌入(包括调用上下文、数据依赖关系)。然后,设计一种双编码器架构:一个编码器处理静态控制流与数据流图,另一个编码器处理动态执行序列,两者通过注意力机制融合形成统一表示。最后,将该表示输入基于 Transformer 的解码器,以自回归方式预测函数名。在包含常用库和恶意软件样本的大规模数据集上,SymLM 在 top-1 准确率和命中率上均显著优于现有基线(如 DEEPMEM、Asm2Vec),尤其在处理复杂的系统级函数和混淆代码时表现出强鲁棒性。实验还证明,模型能够泛化到未见过的新二进制和编译器版本。该工作为自动化逆向分析、漏洞发现和恶意软件分类提供了实用的辅助工具,展示了将运行时语义融入代码表示学习的巨大潜力。
💡 推荐理由: 函数名预测能大幅提升逆向工程师分析剥离二进制(如恶意软件、固件)的效率,SymLM 首次系统地将执行感知融入学习,填补了静态方法无法捕捉动态行为的空白。
🎯 建议动作: 研究跟进