Multi-View Decompilation for LLM-Based Malware Classification
本文表明,利用来自多个反编译器(Ghidra 和 RetDec)的互补伪 C 视图作为大语言模型的输入,与单视图方法相比,能显著提高恶意软件分类的召回率和 F1 分数,为增强恶意软件分拣提供了一种简单的、无需训练的策略。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
想象一下,你是一名正在试图查明一个神秘、锁着的盒子里面装的是一份无害的礼物还是一个危险陷阱的侦探。问题是,这个盒子已经被砸开了,你留下的只有两堆略显凌乱的碎片。
这篇论文介绍了一种让人工智能(AI)扮演那个侦探的新方法。
问题:一面破碎的镜子
通常,当安全专家分析一个计算机程序(“二进制文件”)时,他们无法看到原始、整洁的源代码。相反,他们会使用一种叫做**反编译器(decompiler)**的工具,尝试将程序从破碎的碎片中重新构建成看起来像可读文本(伪C代码)的形式。
把反编译器想象成一面破碎的镜子。如果你从裂开的镜子里看自己的倒影,你能看到你的脸,但它是扭曲的。
- 镜子 A (Ghidra) 可能会把你的鼻子拉长一点。
- 镜子 B (RetDec) 可能会以不同的方式眯起你的眼睛。
两面镜子显示的都是同一个人,但它们展示了不同的“故障”或扭曲。
在过去,研究人员要求 AI 去观察仅一面镜子(即一种反编译器的输出)来判断代码是“好”的(良性的)还是“坏”的(恶意的)。本文作者认为这样做是有风险的。如果镜子 A 通过过度拉伸隐藏了一个危险特征,AI 可能会漏掉它。如果镜子 B 通过眯眼隐藏了它,AI 同样会漏掉它。
解决方案:“双镜”策略
研究人员提出了一个简单的问题:如果我们同时向 AI 展示两面镜子会怎样?
他们构建了一个包含 100 个程序的测试集:50 个是无害的实用程序(如计算器或文件管理器),50 个是真实的恶意软件(如病毒、间谍软件和机器人)。他们将每一个程序都通过两种不同的反编译器(Ghidra 和 RetDec)运行,为每个样本创建了两个不同的“视角”。
然后,他们要求各种 AI 模型去观察:
- 仅观察来自镜子 A 的视角。
- 仅观察来自镜子 B 的视角。
- 同时观察这两个视角。
他们的发现
结果就像是通过对比两份证人证词来破案的侦探一样。
- “单镜”缺陷: 当 AI 只看其中一个视角时,它经常会感到困惑。有时镜子 A 让病毒看起来很无害,有时镜子 B 也是如此。AI 会漏掉坏人,因为那面特定镜子的“故障”掩盖了证据。
- “双镜”优势: 当 AI 同时看到两个视角时,它捕捉坏人的能力大大增强了。
- 如果镜子 A 隐藏了一个危险特征,镜子 B 通常会清晰地展示它。
- 如果镜子 B 显得嘈杂且混乱,镜子 A 则往往很清晰。
- 通过结合两者,AI 可以“填补空白”并看到全貌。
论文发现,这种“双镜”方法并不需要教给 AI 新知识或在新的数据上进行训练。这是一个简单的、免费的升级:只需从不同的角度给 AI 提供更多的信息。
“共识”的比喻
研究人员还尝试了一个聪明的捷径。他们说:“如果镜子 A 和镜子 B 都认为代码是安全的,那我们就相信它们。但如果它们意见不一,我们就结合两个视角来看,以弄清楚谁才是正确的。”
这效果不错,但最好的结果来自于直接向 AI 展示两个视角。事实证明,即使在两面镜子达成一致时,拥有两个视角也能帮助 AI 变得更加自信和准确。
核心结论
论文得出结论:依赖单一的反编译器就像是在拼图时缺少了一半的碎片。通过使用多个反编译器来为 AI 提供关于同一段代码的不同视角,我们可以在不需要构建更聪明的 AI 或进行更长时间训练的情况下,捕捉到更多的恶意软件。这是一个简单、实用的技巧,它让现有的 AI 工具在识别数字威胁时变得更加可靠。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。