6.1 实验总结与展望 ································ ································ ······················· 29
7 对该课程的建议与意见································ ································ ················ 30
8 参考文献 31
1 课程设计任务书
1.1课程设计目的
本课程题目为基于源代码的软件同源性分析与漏洞检测系统,在学习了 C 语言、汇编语言、数据结构、软件安全等先导课程后,要求自行完成完整的软件系统
1.2课程设计要求
本次课程设计要求设计与完成从界面、算法到系统优化等各个环节内容,形成完整的软件系统。在任务中,必做部分为 R1-R6,是所有同学必须完成的部分,是本课程设计考核合格所需要的基本构成,选做部分根据自己的擅长做出最好的成果。
1.3系统环境
任务可以自己选择 Windows 或者 Linux 平台实现,检测的源代码可以为 c/c++/Java.跨语言同源性为 c 语言与其它语言的对比检测。
我选择的系统环境为: Win10 VS2019 QT
1.4实验过程记录
R1 提供系统界面
所有功能要有图形界面展示,形成完整的软件系统.可以使用 VS/QT/Python 等工具实现。
R2 利用字符串匹配进行同源性检测
通过代码有效字符串对比匹配,分析样本之间的拷贝比率
R3 利用控制流程图 CFG 进行源代码同源性检测
通过提取代码的调用关系图,检测样本之间各个函数调用关系图是否相似,得出相似的概率
R4 栈缓冲区检测
根据栈缓冲区原理分析分配的栈数据区是否存在溢出的问题,给出可疑代码行数与列数。
R5 格式化字符串漏洞检测
根据格式化字符串漏洞原理分析使用的格式化函数是否存在溢出的问题,给出可疑代码
行数与列数。
R6 提供样本库
提供漏洞检测与同源性检测样本库,样本数量不少于10 个,每个代码行数不少于100 行; 每种漏洞至少一个。
A2 支持分布式任务调度
需要设计一个主控,多个进程/主机并发检测。
B1 堆缓冲区检测
根据堆缓冲区原理分析分配的数据区是否存在溢出的问题,给出可疑代码行数与列数。
B2 整数宽度溢出检测
根据整数宽度溢出原理分析分配的数据是否存在溢出的问题,给出可疑代码行数与列数。
B3 整数运算溢出检测
根据整数运算溢出原理分析分配的数据是否存在溢出的问题,给出可疑代码行数与列数。
B4 整数符号溢出检测
根据整数符号溢出原理分析分配的数据是否存在溢出的问题,给出可疑代码行数与列数。
C1 同源性检测样本库
样本数大于等于 50 个,每个代码行数不少于 100 行,包含 1-100 行相同代码。界面部分可以 VS/QT/Python 等工具实现