当前位置: X-MOL 学术Comput. Secur. › 论文详情
Our official English website, www.x-mol.net, welcomes your feedback! (Note: you will need to create a separate account there.)
SELF: A method of searching for library functions in stripped binary code
Computers & Security ( IF 5.6 ) Pub Date : 2021-09-16 , DOI: 10.1016/j.cose.2021.102473
Xueqian Liu 1, 2 , Shoufeng Cao 3 , Zhenzhong Cao 4 , Qu Gao 1 , Lin Wan 1 , Fengyu Wang 1
Affiliation  

During software development, numerous third-party library functions are often reused. Accurately recognizing library functions reused in software is of great significance for some security scenarios, such as the detection of known vulnerabilities and reverse analyses of malware. An optional method for recognizing library functions is matching the functions in the library to those in the target software. However, due to the diversity of function library versions, compilers, build options, etc., there are differences between the two corresponding functions. Recognizing library functions used in target software precisely is still a challenging task. In this paper, we propose a novel method named SELF (SEarch for Library Functions) to recognize library functions used in target software. In SELF, the function is represented with a co-occurrence matrix and encoded by a convolutional auto-encoder (CAE). Then, the similarity between two functions is detected using the generated bottleneck features. This scheme focuses on the discriminative semantic features; thus, this method can not only distinguish different functions but also tolerate the subtle differences between two pairing functions, which is specifically required for library function recognition. We collected 451 software projects, including approximately 3 million functions, to train and evaluate SELF. The experimental results show that SELF performs well in both Recall@1 and Recall@5. Especially when the library version gap is large, SELF significantly outperforms classic BINDIFF. In addition, SELF shows good computational efficiency.



中文翻译:

SELF:一种在剥离的二进制代码中搜索库函数的方法

在软件开发过程中,很多第三方库函数经常被重用。准确识别软件中重用的库函数对于某些安全场景具有重要意义,例如已知漏洞的检测和恶意软件的逆向分析。识别库函数的一种可选方法是将库中的函数与目标软件中的函数进行匹配。但是,由于函数库版本、编译器、构建选项等的多样性,两个对应的函数之间存在差异。准确识别目标软件中使用的库函数仍然是一项具有挑战性的任务。在本文中,我们提出了一种名为 SELF(库函数搜索)的新方法来识别目标软件中使用的库函数。在自我中,该函数用共生矩阵表示,并由卷积自动编码器 (CAE) 编码。然后,使用生成的瓶颈特征检测两个函数之间的相似性。该方案侧重于判别语义特征;因此,该方法不仅可以区分不同的函数,还可以容忍两个配对函数之间的细微差异,这是库函数识别所特别需要的。我们收集了 451 个软件项目,包括大约 300 万个函数,用于训练和评估 SELF。实验结果表明,SELF 在 Recall@1 和 Recall@5 中都表现良好。特别是在库版本差距较大的情况下,SELF 明显优于经典 BINDIFF。此外,SELF 显示出良好的计算效率。然后,使用生成的瓶颈特征检测两个函数之间的相似性。该方案侧重于判别语义特征;因此,该方法不仅可以区分不同的函数,还可以容忍两个配对函数之间的细微差异,这是库函数识别所特别需要的。我们收集了 451 个软件项目,包括大约 300 万个函数,用于训练和评估 SELF。实验结果表明,SELF 在 Recall@1 和 Recall@5 中都表现良好。特别是在库版本差距较大的情况下,SELF 明显优于经典 BINDIFF。此外,SELF 显示出良好的计算效率。然后,使用生成的瓶颈特征检测两个函数之间的相似性。该方案侧重于判别语义特征;因此,该方法不仅可以区分不同的函数,还可以容忍两个配对函数之间的细微差异,这是库函数识别所特别需要的。我们收集了 451 个软件项目,包括大约 300 万个函数,用于训练和评估 SELF。实验结果表明,SELF 在 Recall@1 和 Recall@5 中都表现良好。特别是在库版本差距较大的情况下,SELF 明显优于经典 BINDIFF。此外,SELF 显示出良好的计算效率。该方案侧重于判别语义特征;因此,该方法不仅可以区分不同的函数,还可以容忍两个配对函数之间的细微差异,这是库函数识别所特别需要的。我们收集了 451 个软件项目,包括大约 300 万个函数,用于训练和评估 SELF。实验结果表明,SELF 在 Recall@1 和 Recall@5 中都表现良好。特别是在库版本差距较大的情况下,SELF 明显优于经典 BINDIFF。此外,SELF 显示出良好的计算效率。该方案侧重于判别语义特征;因此,该方法不仅可以区分不同的函数,还可以容忍两个配对函数之间的细微差异,这是库函数识别所特别需要的。我们收集了 451 个软件项目,包括大约 300 万个函数,用于训练和评估 SELF。实验结果表明,SELF 在 Recall@1 和 Recall@5 中都表现良好。特别是在库版本差距较大的情况下,SELF 明显优于经典 BINDIFF。此外,SELF 显示出良好的计算效率。包括大约 300 万个函数,用于训练和评估 SELF。实验结果表明,SELF 在 Recall@1 和 Recall@5 中都表现良好。特别是在库版本差距较大的情况下,SELF 明显优于经典 BINDIFF。此外,SELF 显示出良好的计算效率。包括大约 300 万个函数,用于训练和评估 SELF。实验结果表明,SELF 在 Recall@1 和 Recall@5 中都表现良好。特别是在库版本差距较大的情况下,SELF 明显优于经典 BINDIFF。此外,SELF 显示出良好的计算效率。

更新日期:2021-09-24
down
wechat
bug