日志日期 · 周五
Hieronym:用 LLM 为剥离符号的二进制恢复函数名
Hieronym 结合全局、调用与函数自身语义,用生成式 LLM 为剥离符号的函数命名,报告显著优于现有方法。
当天发生了什么
2026-09-11(UTC),Xiaoling Zhang 等九位作者在 arXiv 提交了论文 Hieronym 的 v1。论文关注剥离符号二进制中的函数重命名:函数含义需要从随指令集、架构和优化级别变化的底层代码中推断,再表达为简短可读的名字。作者认为现有方法要么遗漏大量语义,要么难以泛化到未见过的二进制。Hieronym 是一个生成式大语言模型框架,采用分层、以摘要驱动的领域适配,并结合全局二进制上下文、局部调用上下文与函数自身语义。论文还提出了词元级和整名级的评估框架。在 x64、x86、ARM、MIPS 及 O0 到 O3 的测试中,作者报告词元级精确率、召回率和 F1 分别提升 50.12%、41.75% 和 45.10%,整名准确率提升 79.94%,并在真实恶意样本上做了实验。
对保护应用逻辑的人意味着什么
去除符号长期被视为最基础的保护步骤。这类研究的目标正是把名字所承载的含义重新推断出来,而且它利用的线索来自上下文:调用了哪些库函数、被谁调用、处理了什么常量和字符串。对开发者而言,去符号依然值得做,因为它去掉了最直接的答案;但不应把它描述为隐藏了函数意图。需要注意边界:论文报告的是相对现有方法的提升,数字来自作者自己的评估;摘要没有说明在经过混淆的代码上的表现,因此不能据此判断它对强化后二进制的效果。
可以做的检查
第一,继续在发布构建中剥离符号,并确认构建流水线确实执行了这一步。第二,审视会泄露上下文的内容:日志字符串、错误信息、断言文本和调试开关,发布构建中尽量去除或替换为编号。第三,检查导入的系统 API 和第三方库组合是否已足以透露模块用途,必要时把敏感处理移到服务端。第四,用你自己的分析工具查看发布二进制,确认去符号后还剩下哪些可读线索。
行动清单
- 确认发布流水线实际执行了去符号
- 清理日志、错误信息等泄露上下文的字符串
- 检查导入 API 组合是否暴露模块用途
原始资料
- arXiv: Hieronym: Leveraging Hierarchical Multi-Source Information for Function Renaming in Stripped Binary (2609.12457) · 资料日期 2026-09-11 · 核对于 2026-10-12