• 论文分享《Neural Network-based Graph Embedding for Cross-Platform Binary Code Similarity Detection》Xiaojun Xu, Chang Liu, Qian Feng, Heng Yin, Le Song, Dawn Song
  • 任务名称:Binary Code Similarity Detection 二进制代码相似性检测/二进制同源性分析
  • 发表于2017年 CCS上(CCF-A 安全顶会),目前已成为该领域baseline之一

基于神经网络的图嵌入方法用于跨平台二进制代码相似度检测 (Gemini)

Neural Network-based Graph Embedding for Cross-Platform Binary Code Similarity Detection

(本文在2017年取得了SOTA,目前已相对落后,常用于baseline对比)

ABSTRACT

TASK:跨平台二进制代码相似度检测需要识别两个来自不同平台的二进制函数(binary function)相似与否。

METHOD:对二进制函数的控制流图(Control-Flow Graph,CFG)提出了一种新的基于神经网络的图嵌入方法,通过衡量 embedding 之间的距离来计算两个函数的相似度。

1 Introduction

  • 在 x86, ARM, MIPS 等跨平台环境下快速检测相似函数。近期的工作试图从binary code中提取各种平台无关的鲁棒特征以表征函数。然后通常采用图匹配(graph matching)算法来计算CFG之间的相似性。
  • Genius从CFG中学习高维特征表示,并将图编码成embeddings。为了计算binary fucntion的embedding,它依旧基于图匹配算法计算目标函数和binary function codebook的相似性。

上述方法的两个严重缺点:

  1. 固定的图匹配算法来计算相似函数很难适用于不同场景(代码剽窃场景检测可以检测,但是漏洞搜索场景,微小的指令差异可能导致漏洞的存在,但算法认为是相似的,手工设计的相似函数很难兼顾这两种情况)。
  2. graph matching 算法效率低下(eg. bipartite graph matching)

基于DNN的方法的复杂度是输入和网络规模的线性大小,因此有极高的效率。本文基于 graph embedding network 把图转化为 embedding。之前的 graph embedding networks 被提出来用于分类和回归任务,但本文考虑的场景是相似度,因此对 graph embedding networks 采用了 Siamese network(孪生网络)可以自然的实现让两个相似函数的 embedding 也相似的目标。这整个网络可以端到端的训练以实现相似度检测。

本文设计了一种新的训练和数据集创建方法,使用默认策略来预训练(pre-train)一个任务无关的图嵌入网络。本文根据相同源代码在不同平台和不同编译优化级别下编译的二进制函数构建了一个大规模的数据集。实验证明,任务无关的模型相比当前的SOTA的图匹配方法,对unseen function更有效且泛化性更好。

过去的方法不能提供有效的灵活性,不能有效地加入额外的特定任务的监督信息。基于神经网络的方法的一个优势是预训练的模型可以在附加监督信息的时候快速重训练以适用于新的应用场景。本文实验表明,在额外的监督信息下,retrained model可以有效的适应新的任务。与Genius需要至少1week来retrain模型不同,本文方法retrain阶段十分高效。本文与Genius相比(本文发表前的SOTA方法),准确率和效率均有大幅提升。

主要贡献:

  • 提出了第一个基于神经网络对二进制函数进行嵌入的方法。
  • 基于孪生网络架构对embedding network做训练,因此pre-trained model可以产生用于相似度检测的embedding。
  • 提出retrain方法可以让本文的模型在附加监督信息的情况下来适应特定任务。
  • 实现Gemini原型:在OpenSSL构建的测试集上有超过Genius和基于传统图匹配方法的AUC。
  • 实验表明 Gemini 比 Genius 计算嵌入的速度快3~4个数量级。
  • 我们使用真实世界的固件映像(firmware image)进行案例研究。我们表明,使用Gemini可以比Genius发现更多有漏洞的固件映像

2 BINARY CODE SIMILARITY DETECTION

2.1 Motivation Problem: Cross-Platform Binary Code Search

problem:cross-platform binary code similarity detection
给定特定二进制函数(如包含心脏滴血漏洞的函数,这里称为query function),我们希望检查大量二进制函数(如,从各种IoT设备的固件image中提取的函数)并快速准确地识别语义上与给定的函数等价或相似的候选函数列表(target fucntion)。该问题的核心是判断两个函数是否相似。
task goals: 1)worked on binary,因为无源码;2)支持跨平台;3)高准确率;4)高计算效率;5)适应性:adapted to domain-specific application

2.2 Existing Techniques

  • Pairwise Graph Matching: Pewny 提出的对每个 basic block 抽取 input–output pairs 作为其在 CFG 中的特征,然后计算图匹配。但 input–output pairs 的计算和图匹配算法的代价都很大。为了提高效率 discovRE 方法选择提取轻量级的语法级别的特征(eg. 算数指令数量、调用指令的数量),并且在图匹配之前通过简单的函数级别特征进行预过滤,但根据 Feng 的研究,这种 pre-filtering 方法不可靠,会导致搜索精度显著下降,并且 Pewny 和 discovRE 都依赖图匹配,这种方法非常低效。
  • Graph Embedding:为了实现高精度和可扩展性,我们希望从 CFG 中学习可以用于检索的特征表示(即需要把 graph 编码成一种 embedding,这样可以把图相似判断转化为向量距离的度量问题)。然后可以用基于局部敏感哈希(locality sensitive hashing, LSH)的数据库做到O(1)查询。【O(1)查询应该相对的是之前的图匹配吧】Feng 是首个采用 Graph Embedding 来解决 vulnerability search 问题的,提出了 Genius 系统如下图所示。对给定的 binary function,Genius 首先以属性控制流图(ACFG)的形式提取原始特征。在 ACFG 中每个节点是由带有一些属性的基本块构成的。Table 1 中展示了 Genius 中提取的特征。



如图2所示,图中的 ACFG 最后被转换为 high-level embedding,并使用 LSH 将其存储到哈希表中。问题的关键是如何把 ACFGs 转化为对应的嵌入表示,Genius 采用的是基于 codebook 的方法,它使用聚类算法来训练 codebook,codebook 由每个 cluster 的一些代表性 ACFGs 组成。为了将 ACFG 转化为特征向量,Genius 测量一个给定的 ACFG 和每个簇中的代表性 ACFGs 的相似度(基于二分图匹配,bipartite graph matching)这些与不同簇的相似度的值构成了该给定的 ACFG 的特征向量。这个想法很有新意,但有一些缺陷:首先,codebook 生成代价很高,因为必须对训练数据集中的每对 CFG 进行成对图匹配,然后需要执行谱聚类( spectral clustering)。codebook 的质量也受到训练数据集的限制。第二,图嵌入的运行时开销随着 Codebook 规模线性增加。因此 codebook 不能很大,这限制了 graph 编码的精度,同时,基于二分图的匹配的相似度计算也不能产生最好匹配效果。

2.3 Neural Network-based Embedding Generation

效率的提升主要是因为不需要做图匹配,NN中的计算可以并行。并且 Gemini 不需要 inter-block 特征。Genius 提取了 offspring 和 betweenness(介数中心性) 的数量,比 block-level 特征计算代价更高且对结果影响不大。Gemini 只需要 block-level 的特征以及 offspring (容易计算)。 NN 已经把块间关系纳入 embedding,因此不需要特意的块间特征。

3 NEURAL NETWORK-BASED MODEL FOR EMBEDDING GENERATION

3.1 Code Similarity Embedding Problem

Code Similarity measure 是任务相关的。

3.2 Solution Overview

结合 Structure2vec 和 Siamese architecture,将用于图分类任务的模型迁移到相似度任务上。为了训练Siamese网络需要大量相似或者不相似的pair对,但在很多场景下 ground truth 数据很有限。为了解决这个问题,我们使用 default policy,该策略认为等价函数(即:从同一源码编译出的 binary function)是相似的,不等价函数不是。因此可以在给定源代码集合的情况下生成大量的数据集。我们也可以在这个数据集上预训练出一个任务无关的模型,对很多任务会比较有效。

3.3 Graph Embedding Network

(图神经网络基础参考我写的其他笔记)
基于 Dai 的 Structure2vec 修改得到本文的 graph embedding network。得到 ACFG 后,需要生成 graph embedding,根据每个节点的 embedding 聚合而来。

Basic Structure2vec Approach
N(v)N(v)N(v)代表节点v在图g中的邻居,Structure2vec 会对每个节点的embedding μv(0)\mu_v^{(0)}μv(0)初始化为0。并在每次迭代中修改该 embedding 表示:

FFF 代表一个非线性映射。根据这个更新公式,embedding 更新过程随着图的拓扑结构而同步扩散。只有在上一轮中所有顶点的嵌入更新完成后,才开始新一轮的顶点嵌入扫描。如果进行了 T 轮更新,每个 vertex embedding μv(T)\mu_v^{(T)}μv(T) 将包含 T-hop neighbors。

在原本的图分类任务中,输出是一个softmax层,模型可以被 end-to-end 训练通过最小化交叉熵。在本文的任务该方法不适用,因此需要孪生架构。

Our Parameterization for F.


xvx_vxv是图节点的d维向量特征,W1W_1W1d∗pd*pdp 矩阵,p 是 embedding size。σ\sigmaσ 是非线性转换(n层FC):

pip_ipi是一个 p∗pp*ppp 的矩阵,这里的 n 表示 embedding depth。

3.4 Learning Parameters Using Siamese Architecture


Siamese architecture 使用两个相同的 Structure2vec,每个分别用一个 ACFG 作为输入,输出是两个 embedding 的余弦距离。这俩个 embeddings 网络共享参数,因此训练中这两个网络也保持相同。

优化目标:

使用 stochastic gradient descent(SGD)进行梯度下降。

3.5 Task-independent Pre-training and Task-specific Re-training

基于 default policy 构建训练集用以预训练一个任务无关的模型以适用于大部分普通的任务。当新增 task-specific data 时,模型可以很快被 retrained 以获得 task-specific model。
Task-independent Pre-training
对 function 产生的 embedding 需要尽可能捕获跨平台和跨架构的函数特征以便于让预训练模型能更好的适应于大部分任务。构建数据集的方法如下:
对给定的源代码集合,使用不同的架构、编译和优化设置,将其编译为二进制程序。并且定义为由相同源码编译出的二进制文件是 similar 的,反之是 dissimilar。对每个 binary function g,相似函数g1g_1g1和不相似函数g2g_2g2被采样用来构建数据集。<g,g1,1>,<g,g2,−1><g,g_1,1>, <g,g_2,-1><g,g1,1>,<g,g2,1>
Task-specific Re-training
假设我们获得了领域相关的数据,<gi,gi′><g_i,g_i'><gi,gi>和其 ground truth label π(gi,gi′)\pi(g_i,g_i')π(gi,gi),我们可以据此产生 ACFG pairs 以用于重新训练图嵌入网络。该部分数据用来增强原本的数据集。在重新训练的过程中,新数据将以 50x 倍的概率被采样到以用于训练。在增强训练之后,这个重新训练的网络ϕ(⋅)\phi(·)ϕ()将被用于相似性检测任务。这样一个 re-training 过程让专家经验可用于神经网络系统中,model 因此被 fine-tuning 以适应特定任务,即更好的检测相似度。

4 EVALUATION

  • 本节使用包含 ground-truth 的模型来对 task-independent pre-trained model 做评估。
  • 使用 real-world datasets 评估模型被 retrained 适应新任务的能力。

4.1 Implementation and Setup

系统组件:1)ACFG extractor,2)图嵌入神经网络。

  • 本文的 ACFG 提取器来自 Genius 的作者实现的反汇编工具 IDA Pro 的插件(plug-in)
  • 代码基于 TensorFlow1.4+python2.7
    • 原论文的repo
    • 民间实现的 ACFG extractor 的 repo
    • 民间实现的 python3+tf2.2 版的代码 repo

论文实验环境:server (During both training and evaluation, only 1 GPU card was used)

  • two Intel Xeon E5-2620v4 CPUs (32 cores in total) running at 2.1GHz
  • 96 GB memory, 1TB SSD, and 8 GeForce GTX 1080 GPU cards

Baseline 过去有:discovRE、Multi-HM、Multi-k-HM、centroid-based search、Genius【过去的SOTA】。本文对比的主要是:

  • Bipartite Graph Matching (BGM):直接基于二分图匹配的相似度计算
  • Codebook-based Graph Embedding (Genius):Genius的码本嵌入方法
    (本文作者联系了 Genius 团队获取了 ACFG extraction code 和其实验中使用的 codebook,然后独立实现了 codebook 生成和嵌入生成的算法以用于对比)

Datasets (1) Dataset I for training the neural network and evaluating the accuracy of the pre-trained model; (2) Dataset II for evaluating the performance of the task-specific model; (3) Dataset III for efficiency evaluation; and (4) a vulnerability dataset (Dataset IV) for case studies.
本文评估用了4个数据集(1)Dataset I 用于训练神经网络和评估预训练模型的准确性(2)Dataset II 用于评估特定任务模型性能(3) Dataset III 评估效率;以及(4)Dataset IV 漏洞检测数据集用于案例研究。

  • Dataset I:用于NN训练和baseline对比。包含根据源码编译的binaries。相同源码编译出的二进制文件是 similar 的,反之是 dissimilar。具体而言基于GCC v5.4 编译 OpenSSL (version 1.0.1f and 1.0.1u)。在 O0-O3 优化下输出了 x86, MIPS, ARM 架构的二进制程序。最终获得了 18,269 二进制文件包含了 129,365 ACFGs。把数据集划分成 train/valid/test 三种不相交数据集,如 Table II 所示。切割过程保证同一份源码编译的 binaries 不会被切分到不同集合下。这样可以实验预训练模型对 unseen function 的泛化性。
  • Dataset II:联系 Genius 作者获取了该文中采用的数据集(在他们的文中是Dataset III),包含 33,045 个固件映像。其中 8,128 images 被成功 unpacked。这些 image 来自26个不同的供应商,适用于不同的产品,如IP摄像头、路由器、接入点等。
  • Dataset III:为了评估效率,构建了包含不同大小的 ACFGs 的数据集。具体而言,随机从 Dataset II 中选取了 16 个 firmware images。这包括了 82,100 ACFGs 规模从 1 到 1,306 不等。这些 ACFG 被划分成集合,以便同一集合中的所有 ACFG 大小相同。对于任何包含了 20 及以上 ACFG 的集合,从集合中随机选择 20 个 ACFG 并删除未选中的。最终,在这个数据集中获得了 3037 个ACFG。
  • Dataset IV:参考REF[18]中的数据集,154 个 vulnerable functions dataset。

Training details
首先用 Dataset I 对 NN 做 pre-train,用 Adam(lr=0.0001) 优化。在 Siamese 下训练 100 个 epochs。对每个训练集中的 ACFG g,随机选择一个与 g 相似的 ACFG g1g_1g1(即同一份源码编译),以及一个不相似的 g2g_2g2。然后生成<g,g1,1>,<g,g2,−1><g,g_1,1>,<g,g_2,-1><g,g1,1>,<g,g2,1>作为有标签数据。由于对每个 g 在每个 epoch 独立的随机选择 g1,g2g_1,g_2g1,g2,因此在不同 epoch 的训练数据通常不同。在生成好对每个 epoch 的训练数据后,在喂进网络前对数据做了random shuffle。每个 mini-batch 包括 10 对 ACFGs。在每个 epoch 后,我们在验证集上计算 loss 和 AUC,保存在 valid set 上表现最好的 model。
此处,默认的 embedding size p=64,embedding depth n=2。模型运行 T=5 个迭代,基本块的属性包括 block-level 的属性和 offspring 的数量(共7个)。

4.2 Accuracy

本节评估了 Gemini pre-trained model 的准确率。并根据以下方法构建了相似度检测的测试集:

  • 对 Dataset I testing set 中的每个 ACFG g,从该集合中再随机选取 2 个 ACFGs g1g_1g1, g2g_2g2,且g1g_1g1相似,g2g_2g2不相似。这个相似度测试集包括了 26,265 对 ACFGs(test set中不包括train set中的函数或者相同源码编译出的函数)。这样可以检查 Gemini 在 unseen function 上的相似度检测能力。Fig5a展示了Gemini和baselines的ROC。
  • 测试在不同规模的图上的效率:对 similarity-accuracy testing set 分割成小规模和大规模subset(两个ACFGs都超过10个vertex即为big-graph)。结果如Fig5b和Fig5c所示。

结论简而言之,Gemini 比 baselines 在三种情况都好。

4.3 Hyperparameters

超参数:training epochs、embedding depth、embedding size、ACFG attributes、iterations数量;
training epochs 数量使用 similarity validation set 评估,其他参数使用 similarity testing set 评估。在 similiarty testing set 上 AUC 几乎相同。并且由于我们更感兴趣在 large graph 上的性能表现,其他超参数使用 similarity testing set 的 large-graph subset 进行评估。

Number of epochs
训练 175 epochs,并让模型每 5 epochs 在 valid set 上评估 loss 和 AUC。如图Fig7a,7b所示。在 5 epochs 后 loss 和 AUC 下降到一个较低水平,后续几乎保持不变。大概在 100 epochs 后模型 loss 到达最低水平。最高的 AUC 大概出现在 160 epochs。因此得出结论,模型可以很快被训练以获得好的性能(5 epochs)。

Embedding depth
改变Gemini σ\sigmaσ function 中的层数。Fig 7c,我们发现 Embedding depth 是 2 时,ROC曲线获得最大的 AUC 值。原始的 Structure2vec 可以被视为选择 embedding depth 为1。随着向 σ\sigmaσ 增加非线性映射层可以看到清晰的提升。当然添加太多的层没有特别大的帮助。

Embedding size
Fig 7d,我们可以看到实现最外层的 ROC 曲线的 embedding size 是 512。但在 > 64 的 embedding size 中关联的 Curves 非常接近。更大的 embedding size 需要更多的训练和评估时间。把嵌入大小设置为 64 可以在效果和效率中做一个比较好的折中。(即使这里设为16该方法也比baseline好)。

ACFG attributes
使用三种不同的方式提取属性以构建 ACFGs,

  1. 6 block-level attributes,Block;
  2. 6 block-level attributes plus number of offspring,Block+O;
  3. all 8 attributes used in Genius,Block+O+B;

在Fig7e中,Block+O效果最好。betweeness attribute 反而让模型过拟合。

Number of iterations (这里即图上的 k-hop)
Figure 7f 中,当迭代数量设置为 T>=5 时模型取得最佳性能。因为 large graph subset size >= 10,因此用 5-hops 来聚合图上信息。

4.4 Efficiency

在 Dataset III 中对比了 Genius 和 Gemini 的效率。测量以下任务的延迟:
1)对单个函数的 ACFG 提取时间;
2)对 ACFG 的 embedding 生成时间;
3)单个函数生成 embedding 的时间 (overall latency);
本文对 Gemini 实现了基于 CPU 和 GPU 的版本,对 Genius 实现了单线程和多线程版本(用二分图匹配对 codebook 进行相似度比较时这个过程可以并行,即每个线程处理 codebook 中的一个 graph。
ACFG extraction time
Figure 6a (one point for each sample) and Figure 6b (average extraction time by different ACFG sizes)。
可以看到提取6属性或者7属性时时间几乎相同。但考虑 betweeness 时间开销为 8x 倍。
Fig6b 可以看出随着 ACFG size 增加,提取时间通常也相应增加。Genius 需要包含 betweeness 的共8个属性来获得最佳性能,但 Gemini 可以通过 embedding update 学到 graph structural 信息,因此不需要该属性。


Embedding generation time
如图 Figure 6c and Figure 6d 所示。CPU实现的Gemini比多线程版本的Genius快2400x到16000x倍。
ACFGs 是 spare graph 稀疏图,每个顶点的出度至多为2,计算成本几乎是图规模的线性大小。且矩阵运算可以通过多核 CPU 加速。但单独的图匹配算法无法并行加速,至多在 codebook 中不同的ACFGs匹配的时候可以通过并行匹配去加速(同时进行多个匹配算法)。这个加速取决于 codebook 中的 ACFG 的数量。并且很难达到理论的上线(codebook size)。
多线程版本的Genius相比单线程版本的Genius虽然在匹配速率上10x倍的提升,但是最终整体性能却只有35%的提升,原因是因为对于大规模的graph(>500vertices),处理该graph的时间占据主要时间。并且多线程本身有一定开销。如Figure 6c and Figure 6d所示,当图较小时多线程的Genius反而比单线程版本慢。在小图时,gemini的gpu版本也比cpu版本慢,在大图时gpu版本快70%。
Overall latency of embedding generation
Gemini 比 Genius 平均快 386.4x 倍。

4.5 Training time

  • 新的 firmware images 的发布可能需要模型每周或者每月重新训练。
  • 在论文实验环境下 206,000 个函数的训练集需要大概 5 min 运行一个 epoch,并且 Gemini 运行 5 个 epochs 就可以取得比较好的效果,100 个 epochs 取得最佳性能。这说明 Gemini 需要最少 30 min 来 retrain model,要获得最佳性能需要 10 hours。因此 NN model 很容易被 retrain。

4.6 Understanding the Embeddings

基于任务无关的预训练嵌入网络来可视化 embedding 来探索其有效性。这里随机选择了 5 个源函数然后计算其在不同平台、不同编译器、不同优化级别下编译的二进制函数。使用 t-SNE 进行高维向量的降维可视化。

4.7 Accuracy of Task-specific Retrained Model using Real-world Dataset

本节基于 real-world firmware images 进行 task-specific retraining 的评估,评估环境参考论文[18]的设置。从 Dataset II 中选取了 420,558,702 functions 来构建 ACFGs。然后在 Dataset IV 中选择 2 种漏洞(与[18]相同)。对每个漏洞,视为 specific task 去检索 Dataset I 中具有相同漏洞的函数。为了实现该目标,对从 Dataset I 中训练的模型进行了重新训练。
[18] Qian Feng, Rundong Zhou, Chengcheng Xu, Yao Cheng, Brian Testa, and Heng Yin. 2016. Scalable Graph-based Bug Search for Firmware Images. In ACM Conference on Computer and Communications Security (CCS’16)
本文参考论文[18]只检查top-50 similar结果上的识别精度,可以做到80%的准确率,超过原论文20%~50%的准确率。

Retraining effectiveness
首先有一个 pre-trained model,然后用它去计算目标库中所有的函数的 embedding 来构建索引,在此处的 case 中每个 query 可以在 3s 内完成。人工检查了 Top-50 的结果,并人工打标签,因此 top-50 的结果可以被用于 retraining。在 retraining 后,重新计算从目标库中随机选择的子集的 embedding,来构建新的 Top-K 结果,重复上述步骤多次,实际上我们的实验发现是需要少量的迭代次数进行 retraining 即可。Genius 方法不能像这样根据少量的附加监督信息进行重新训练。因此 retraining 是本文方法的一个优点。

具体而言,本文识别了 CVE-2015-1791 和 CVE-2014-3508 用以和 Genius 对比。

  • 对 CVE-2015-1791,我们的方法在一次 retraining 迭代后,在 Top-50 结果中就发现了 42 个 TP,来自4家供应商(D-Link,ZyXEL,DD-wrt,Tomato by Shibby)。在 Top-100 中发现了 85 个 TP,Genius 在 Top-50 中只检测出来 14 个漏洞固件映像(D-Link、Belkin)。
  • 对 CVE-2014-3508 较难,因为 CFG 打补丁后没有发生变化,只增加了一条指令(storing a zero value into the memory buffer)。Gemini 在经过 3 次 retraining 后可以在 Top-50 中检测出 41 个 TP,Genius 只能检测出 24 个。

Retraining time
对每次 retrain,对 model 训练 5 个 epochs,并从数据集中随机选 10% 用于评估。第二步中的 ACFGs 不用重新生成,只需要付出 embedding 计算代价。上述两个步骤的总成本是 2 hours。在后续的迭代中这个时间甚至更短。人工专家花费少于 12 hours 的时间即可进行 3 轮迭代来训练一个较好的模型用于检测给定的漏洞。对整个数据集使用该模型大概需要 12 hours 来生成 embedding(大概每分钟可以生成6w个 embedding)。

5 RELATED WORK

Raw feature based bug search bug search in binaries
N-grams or N-perms 是早期的用于 bug search 的方法,基于 binary sequence 或 mnemonic code matching 而不是理解 code 的语义,因此该方法不能接受不同编译条件导致的 opcode reordering 问题。为了提高准确率,tracelet-based 方法用来捕获 execution sequences 作为代码相似度检测的特征,可以处理 opcode changes 问题。TEDEM 基于每个基本块的 expression tree 来捕获语义特征,但 opcode 和 register name 在不同架构下不太一样,因此这些方法都不能很好的处理跨架构的问题。
而现有的处理跨架构问题的方法,BinDiff 和 BinSlayer 采用了代价高昂的 graph isomorphism 算法来评估 CFG 的相似性。BinHunt 和 iBinHunt 基于 symbolic execution 和 theorem prover 来提取 equations 和进行 the equivalent checking。
Pewny 基于 MinHash 来降低代码相似度计算代价,但采用的图匹配算法计算代价依旧高昂。DiscovRE 使用 pre-filtering 以通过消除不必要的匹配对来增强基于CFG的匹配过程,但 pre-filtering 也不太可靠,并且有大量 FNs。

Graph embedding
Weisfeiler-Lehman算法用于对图中不同的结构计数。文中采用的 Structure2vec 方法是当年 GNN 领域的前沿方法。

Deep learning-based graph embedding approaches 略。

6 CONCLUSION

本文在准确率、训练时间、嵌入生成时间均大幅超越Genius。

安全研究 # Neural Network-based Graph Embedding for Cross-Platform Binary Code Similarity Detection相关推荐

  1. 安全研究 # Order Matters: Semantic-Aware Neural Networks for Binary Code Similarity Detection

    论文分享:来自腾讯安全科恩实验室<Order Matters: Semantic-Aware Neural Networks for Binary Code Similarity Detecti ...

  2. 【论文阅读 - AAAI 2020】Order Matters:Semantic-Aware Neural Networks for Binary Code Similarity Detection

    Order Matters: Semantic-Aware Neural Networks for Binary Code Similarity Detection Authors: Zeping Y ...

  3. Item Tagging for Information Retrieval: A Tripartite Graph Neural Network based Approach 用于信息检索的项目标签

    文章目录 摘要 简介 Tagging 方法 动机和总览 动机 总览 TagGNN-IT 节点表示 TagGNN-IT Propagation 损失 2.3 TagGNN-QI 2.3.1 边表示 2. ...

  4. Paper翻译:《A Novel Convolutional Neural Network Based Model for Recognition and Classification of App》

    论文名称:<A Novel Convolutional Neural Network Based Model for Recognition and Classification of Appl ...

  5. A recurrent neural network based microscopic car following model to predict traffic oscillation

    A recurrent neural network based microscopic car following model to predict traffic oscillation 这又是一篇 ...

  6. 读论文《Recurrent neural network based language model 》

    读论文<Recurrent neural network based language model > 标签(空格分隔): 论文 introduce 本文将循环神经网络RNN引入了神经网络 ...

  7. Convolutional Neural Network based Multiple-Rate Compressive Sensing for Massive MIMO CSI Feedback:

    Convolutional Neural Network based Multiple-Rate Compressive Sensing for Massive MIMO CSI Feedback: ...

  8. 【论文阅读】Siamese Neural Network Based Few-Shot Learning for Anomaly Detection in Industrial Cyber-Physi

    文章目录 Abstract 1. Introduction 2. Related Work 2.1 Anomaly Detection techniques for CPS 2.2 Few-Shot ...

  9. 6Attentive Convolutional Neural Network based Speech Emotion Recognition: A Study on the Impact of

    文章目录 前言 一.文章内容 二.文章总结 前言 原文地址--2017 一.文章内容 这个文章使用了注意力卷积网络)(ACNN)和多视图学习的方法,还研究了输入不通长度的音频信息( how long ...

最新文章

  1. 练手扎实基本功必备:非结构文本特征提取方法
  2. C#中String对象转换为Font对象的方法
  3. Atitit 常用sdk 模块 组织架构切分 规范与范例attilax总结
  4. 深度学习核心技术精讲100篇(二十四)-简单谈下深度学习在中文分词中的应用
  5. linux ssh互免密配置
  6. android插上耳机仍用扬声器播放音频
  7. Web渗透测试中常见逻辑漏洞解析与实战
  8. linux每日命令(1):gzip命令
  9. Android入门:通过JSON数据与服务器进行通信
  10. windows测试模式
  11. Android 开发工具类 03_HttpUtils
  12. FTP上传无文件以及0字节问题
  13. 空间变量php,PHP名称空间可以包含变量吗?
  14. 浏览器 pad android,360安全浏览器平板电脑Pad专用版-360安全浏览器HD 安卓版v1.1.0-PC6安卓网...
  15. android车载蓝牙开发,车载蓝牙开发二
  16. 申请软件著作权可以加急吗?软著申请时间怎么计算的?
  17. SAP的系统审计以及SM19的使用 1
  18. jenkins配置svn提交一键自动部署
  19. 实在智能签约上海联通,共创美好智慧生活
  20. 知识共享有多难?做好这几点,问题统统解决

热门文章

  1. Arcgis js featureLayer加载完成之后,对其加载的要素重新定义样式
  2. 知识点滴 - X射线和伽马射线有什么区别?
  3. java面试题总结-详细分类
  4. 泰坦尼克号入门学习(思维导图)
  5. 为什么你不想学习?只想玩?人是如何一步一步废掉的
  6. phpstudy启动不了mysql数据库_phpstudy的数据库服务不能正常启动该怎么办
  7. 好程序员Java培训分享20个Java程序员基础题
  8. 【ATcode】怪文書 / Dubious Document(题意)
  9. 手搭深度推荐模型(四) NFM
  10. PTA——基础编程题 | 7-27 冒泡法排序 (20分)