2.1 跨漏洞挖掘方法
2.1.2 GMN
2.1.2.3 总结和不足
在GMN实现的过程中,遇到了各种问题。因为Genius提取固件的ida文件时使用的环境是Python2下的pickle模块,而GMN的环境为python3,其pickle模块的方法也有所变化。需要对将Genius下保存ida文件所基于的类对象定义文件也移至GMN的目录下才能正常读取之前保存的ida文件。成功读取之后则使用了跟Gemini同样的方法,提取出GMN所需要的ACFG的特征向量及函数名等信息,将其转化为了json格式的文件以便后续处理。
由于成员设备的性能问题,为了在可接受的时间内训练GMN模型,我们使用了性能远高于个人电脑的远程服务器。配置好服务器运行环境后才成功训练出了效果较好的模型。在服务器上运行十二个小时完成了五十万轮的迭代,最终得到了较好的模型结果。
在图的相似性检测任务下,GMN模型(AUC≈0.95)并没有论文中所说的那样优于Gemini模型(AUC≈0.97)。同时GMN检索时间虽然优于之前的所有方案,但耗时依然较长,这两个问题我们分析是由于GMN模型的神经网络超参数并未设置到最优导致的,对于超参数的优化也是我们后续工作要改进的地方之一。