> For the complete documentation index, see [llms.txt](https://dizzzzy.gitbook.io/notebook/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://dizzzzy.gitbook.io/notebook/vulnerability-detection/bcsd.md).

# BCSD

二进制代码相似性检测（BCSD）用于在缺乏源代码时查找漏洞和抄袭，通过动态和静态分析方法进行。动态分析关注运行时的函数特征，而静态分析则从汇编代码中提取特征，但可能产生误报。跨平台BCSD利用不同架构间的语意相似性，而AST提供语义信息，帮助识别不同体系中相似函数

同一套源代码基于不同因素的组合可以生成非常多不同二进制程序。

CPU架构：X86、ARM、MIPS、PPC、RISC-V；

架构位数：32bits、64bits；

OS：Linux、Windows、Android、鸿蒙、VxWork；

编译选项：O0\~O3；

安全编译选项：BIND\_NOW、NX、PIC、PIE、RELRO、SP、FS、Ftrapv等

按这些选项可以有5x2x5x4x8 =1600个组合，从中可以看出二进制代码相似度比较技术不管是学术界还是工业界来说都是一个挑战技术
