基于C和Python编程实现源代码的软件同源性分析与漏洞检测系统 毕业论文+任务书+实验报告+参考文献+项目源码

目录

1 毕业设计设计任务书

1.1 毕业设计设计目的

1.2 毕业设计设计要求

1.3 系统环境

1.4 实验过程记录

2 绪言

2.1 字符串匹配同源性检测

2.2 控制流程图CFG源代码同源性检测

2.3 漏洞检测

3 系统方案设计

3.1 系统方案设计

3.2 字符串匹配同源性检测

3.3 CFG匹配源代码同源性检测

3.4 栈缓冲区溢出

3.5 格式化字符串漏洞检测

3.6 分布式任务调度

3.7 堆缓冲区检测

3.8 整数宽度溢出检测

3.9 整数运算溢出检测

3.10 空指针引用

4 系统实现

4.1 字符串匹配的同源性检测

4.1.1 检测流程

4.1.2 关键函数说明

4.1.3 LCS函数

4.1.4 相似性计算

4.2 CFG控制流程图的同源性检测

4.2.1 检测流程

4.2.2 关键函数说明

4.3 栈缓冲区溢出

4.3.1 检测流程

4.4 堆缓冲区溢出检测

4.4.1 检测流程

4.5 整数宽度溢出

4.5.1 检测流程

4.6 格式化字符串漏洞检测

4.6.1 检测流程

4.7 空指针引用

4.7.1 检测流程

4.8 分布式任务调度

4.8.1 运行流程

4.9 整数运算溢出检测

4.9.1 检测流程

4.10 UI模块

4.10.1 制作流程

5 系统测试

5.1 字符串匹配同源性检测

5.1.1 样例测试

5.1.2 问题解决

5.2 CFG同源性检测

5.2.1 样例检测

5.2.2 问题解决

5.3 缓冲区溢出

5.3.1 样例测试

5.4 格式化字符串输出漏洞

5.4.1 样例测试

5.5 整数溢出检测

5.5.1 样例测试

5.6 整数宽度溢出

5.6.1 样例测试

5.7 多进程调度

5.7.1 样例测试

5.8 空指针引用

5.8.1 样本测试

5.9 栈溢出检测

5.9.1 样本测试

5.10 UI界面

5.10.1 样例测试

6 总结与展望

6.1 总结

6.2 展望

7 参考文献

1 毕业设计设计任务书

1.1 毕业设计设计目的

本次毕业设计设计为了巩固上学期在软件安全毕业设计上所学的安全知识,包括堆栈溢出、整数溢出等等,同时考察了一些课外的新事物,例如字符串匹配与CFG控制流程图的同源性检测。根本目的是让同学们加深对软件安全本门学科的理解和深入的实践。

以下是本次课设的具体目的:

l 对代码的同源性检测,分为字符串匹配和CFG的检测,在于考察学生自我解决问题的能力,包括自己查找文献,根据文献提炼思想,再将思想转化为实际代码的能力。

l 对于漏洞的检测,包括几种不同类型的漏洞种类,这要求学生对于每种漏洞的特征做一个总结,通过静态分析的方式将代码中可能隐藏的漏洞发掘出来。

1.2 毕业设计设计要求

本次毕业设计设计要求设计与完成从界面、算法到系统优化等各个环节内容,形成完整的软件系统。在任务中,必做部分为R1-R6,是所有同学必须完成的部分,是本毕业设计设计考核合格所需要的基本构成,选做部分根据自己的擅长做出最好的成果。

具体任务如下:

序号

任务(必须完成的)

要求

R1

提供系统界面

所有功能要有图形界面展示,形成完整的软件系统.可以使用VS/QT/Python等工具实现。

R2

利用字符串匹配进行同源性检测

通过代码有效字符串对比匹配,分析样本之间的拷贝比率

R3

利用控制流程图CFG进行源代码同源性检测

通过提取代码的调用关系图,检测样本之间各个函数调用关系图是否相似,得出相似的概率

R4

栈缓冲区检测

根据栈缓冲区原理分析分配的栈数据区是否存在溢出的问题,给出可疑代码行数与列数。

R5

格式化字符串漏洞检测

根据格式化字符串漏洞原理分析使用的格式化函数是否存在溢出的问题,给出可疑代码行数与列数。

R6

提供样本库

提供漏洞检测与同源性检测样本库,样本数量不少于10个,每个代码行数不少于100行;每种漏洞至少一个。

以下为2选1:

A1

跨语言同源性检测验证

在软件版权保护中,有时候需要检测是否参考了有版权的代码,换用一种语言实现同样的功能,本功能可以通过CFG检测实现,但需要给出4个以上不用语言的同源性分析样本。

A2

支持分布式任务调度

需要设计一个主控,多个进程/主机并发检测。

以下为6选4:

B1

堆缓冲区检测

根据堆缓冲区原理分析分配的数据区是否存在溢出的问题,给出可疑代码行数与列数。

B2

整数宽度溢出检测

根据整数宽度溢出原理分析分配的数据是否存在溢出的问题,给出可疑代码行数与列数。

B3

整数运算溢出检测

根据整数运算溢出原理分析分配的数据是否存在溢出的问题,给出可疑代码行数与列数。

B4

整数符号溢出检测

根据整数符号溢出原理分析分配的数据是否存在溢出的问题,给出可疑代码行数与列数。

B5

空指针引用

根据课堂学习其它溢出原理是否存在空指针引用的问题,给出可疑代码行数与列数。

B6

竞争性条件

给出竞争性条件存在的代码位置。

以下2选1:

C1

同源性检测样本库

样本数大于等于50个,每个代码行数不少于100行,包含1-100行相同代码。

C2

漏洞检测样本库

样本数大于等于50个,每个代码行数不少于100行;每种漏洞至少一个。

  • 28
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员小马软件开发定制

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值