From P-Code to GNN: extract binary code semantics
文章介绍 Quarkslab 开源的 pcode_graph 库,用于将二进制代码转换为语义图,并利用图神经网络进行跨架构、跨编译器的函数相似性检测。作者首先解释为何统计特征和原始汇编不适合语义比较,然后详细展示通过 pypcode 将二进制提升为 P-Code、构建数据流图与控制流图、应用简化与分析 pass 的过程。实验基于 Cisco-Talos 数据集,采用 GINE 架构和 Supervised Contrastive Loss 训练嵌入模型,最终在 XM 等任务上取得与基准最优方法 GMN 相当的 AUC。文章也明确指出了当前方法的局限,如指令排列对控制流边的影响、大函数超时剔除以及未做充分的超参数搜索。
推荐收录,因为文章不仅开源了可复用的工具,还完整呈现了从二进制语义提取到图神经网络建模的工程链路,包含具体代码、数据预处理权衡和实验对比。适合从事二进制分析、漏洞挖掘、恶意软件检测或程序相似性研究的读者,其将 P-Code 抽象与 GNN 结合的方法可直接迁移到相关工程场景,且文中明确说明的边界和未解决问题有助于读者判断适用性。