基于控制依赖路径覆盖的Fuzzing模型
基于Fuzzing的文件格式漏洞挖掘技术
基于Fuzzing的文件格式漏洞挖掘技术摘要随着计算机的不断发展,人们的生活越来越离不开各种各样计算机应用软件的辅助。
而随着大量应用软件的诞生,产生的软件安全问题也慢慢开始引起更多人的重视。
攻击者经常利用软件漏洞来直接绕过系统安全防御,进而控制整个操作系统。
漏洞挖掘作为软件安全领域一个重要的分支,旨在提高软件安全质量,尽可能先于攻击者发现安全问题,以降低安全风险。
由于传统的漏洞挖掘方式主要通过白盒测试来对软件源代码进行审计,这种方法不仅需要审核者了解编程概念和产品功能的每一个细节,而且还需要测试人员首先获得产品的源代码。
而基于Fuzzing的漏洞挖掘技术可以在不需要访问源代码的基础上对软件进行安全测试,在发掘那些用传统代码审计无法发现的产品关键安全漏洞方面,Fuzzing可以更加高效的发现软件中存在的问题。
本设计基于Windows平台上文件格式漏洞分析方法,通过Fuzzing技术实现对软件的自动化安全测试。
首先提出基于文件内容变异和基于文件结构生成两种生成畸形文件方法。
然后利用反汇编引擎l ibdasm完成对目标程序的异常监控。
最后分别用C#和C语言实现一个比较完整的文件格式Fuzzing测试系统,能够对目标程序进行Fuzzing测试,并将测试结果通过UI展现给测试人员。
关键词:模糊测试漏洞挖掘软件安全安全测试文件格式漏洞File Format Vulnerability Discovery ExploitingTechnique Based on FuzzingABSTRACTWith the Development of Computer Science,People's lives becomea large number of application software ,the issue of security become draw more and more people‟s attention. Attackers often exploit software vulnerabilities to bypass the security defense of system directly, and then control the whole operating system.As a branch of software security, vulnerability discovery aimed at improve the quality of software , As early as possible before Attracter find the Security issue, Reduce security risks. Traditional vulnerabilities discovery mainly through the white-box testing base on source-code, it is not only require auditor have knowledge of coding program and function of products, but also need to get the source-code of products. Use Fuzzing in vulnerabilities discover means you can auditor software not require access to source-code. Fuzzing can be more efficient to audit critical security vulnerabilities than traditional code audit.This paper base on the method of vulnerabilities analysis on windows Operating system, Using Fuzzing to achieve automation software security testing. Firstly it comes up with two methods to generate malformed file: Content-based and structure-based, and Secondly it use the disassembly engine-l ibdasm to monitor the exception of target software. Finally it use C# and C programming language to achieves a visual tools for Fuzzing and aids auditor to analysis vulnerabilities.Key Words:Fuzzing; Vulnerability Discovery Exploiting; Software Security; Security Testing; File Format Vulnerability;目录第一章绪论............................................................................................................. (1)1.1选题的研究目的和意义 (1)1.1.1课题背景 (1)1.1.2课题意义 (2)1.2国内外发展现状 (2)1.3 主要研究内容 (4)第二章Fuzzing技术介绍 (5)2.1 Fuzzing测试的定义 (5)2.2文件格式Fuzzing测试的方法 (6)2.2.1 构造测试数据 (6)2.2.2 文件格式Fuzzing的流程 (8)2.3 相关工具介绍 (9)第三章:构造畸形数据文件 (12)3.1基于内容变异构造畸形文件 (12)3.2基于结构生成畸形文件 (13)3.2.1 xml文件结构描述语言 (13)3.2.2用xml定义简单的文件结构 (14)3.2.3基于结构生成畸形文件的优缺点 (16)3.3 本章小结 (16)第四章异常检测 (17)4.1反汇编技术 (17)4.2 反汇编引擎libdasm的使用 (18)4.3异常检测模块开发 (19)4.5 本章小结 (20)第五章:FileFuzz的实现 (21)5.1开发环境 (21)5.2开发语言选择 (22)5.3畸形文件生成模块的设计与实现 (22)5.3.1基于变异方式生成畸形文件 (22)5.3.2基于结构生成畸形文件 (25)5.4监视模块设计与实现 (26)5.5配置模块设计与实现 (28)5.6 本章小结 (31)第六章:系统测试 (32)6.1基于文件内容变异测试 (33)6.2基于文件结构生成测试 (37)6.3本章小结 (39)结束语 (39)参考文献 (40)附录 (41)致谢 (45)第一章绪论1.1选题的研究目的和意义1.1.1课题背景软件作为计算机的重要组成部分,在计算机发展过程中有着巨大的作用,随着现代软件工业的发展,软件规模不断的扩大,软件内部的逻辑结构也变得非常复杂,在一些大型的软件公司,测试环节所耗费的资源甚至已经超过了开发,可即便如此,无论从理论上还是工程上都没有任何人敢声称能够彻底消灭软件中的所有逻辑缺陷[1]。
基于fuzzing的Web漏洞检测工具设计与实现
【 to s - ̄ E I E Me d ] -G T H ADIOS IU DE E E O T ONS R E h P T P TI L T I P I I AC I T
P ATCHI OVEI M COPYI NKl LI UNLI NKI APP ED
其 中【 意思是后 面文 法表示的内容进行重复的次数。 n 】 页面名称既请求 的页面不包括后缀 名。对 页面名称模糊通常能发
现未正确保护 的秘密页 。为页面名称设计的文法规则为:
[a e P g 】 a mil n g l mi_n e l gn ea h… d nma a e d n id x o i l f u l a l d
【 I 一 ht : 1 7001ts p p RF ] t / 2 .../ t h p/ e.
R frro t t 示发起请求 的原U L 址 ,对R frrotn值 的 eeec ne  ̄ n R地 eeecnet
模糊可能发现S L . Q  ̄ 漏洞或者进行盗链欺骗。设计的文法规则为 : [ e r c n n _ 【Q ] 目 分析 中取得 的所有链接) R f e o t t + S LI 标 er e】 ( C n nye o t t p 表示当前传输的MI 类型 ,即当前客户端与服务端 et ME 传递 的文件类型 。对C n nt e o t t p 的值进行 模糊通常能发现 We应 用程 e y b
用户定义生成 ,一种是使用 系统 预定义 的模糊数据 ④ 自动分析测 试 结果 ,能够 自动确定大多数常见的We 漏洞。⑤ 可扩 展的预生成模糊 b 数据数据库 。 测 试 目 支持 各种 系统 ,但测 试系统 本身 选择Wi o s 标 n w 。选 择 d C 作为开 发语言。数据 库选择A c s # ce 数据库 ,这样工 具便于携 带能够 s 很方便 的复制到各个个人 电晒上 。
路径依赖思维模型
路径依赖思维模型惯性是一种很微妙的东西,它可以导致你成功,也能让你平庸。
有这样一段话,"生命有限,不要在别人的思想中人云亦云;不要让别人的观点淹没你的想法;更不要让别人成为你生活的主宰者。
"工作上,这是我们坚持自我的一剂良药。
01在古希腊的历史上有这样一个大力士,他在一本尘封多年的书里看到这样一个秘密:波罗的海边有块巨大的宝石,如果能够找到,就可以拥有这个世界。
于是,这个人按照书里的记录,来到了海边。
他坚定信念,一定要找到那块宝石。
于是,这位大力士开始在石头堆里寻找,他抱起一块石头,看了一下,不是宝石,于是就扔进海里,而汹涌的海水会将石头冲走。
他沿着岸边行走,日复一日地寻找,抬起一块石头,看了一眼,发现不是宝石就扔到海里去,石头就会沉入大海。
开始,找到宝石的愿景让他十分兴奋,不知疲倦地寻找。
过了1个月,他感到困惑,开始怀疑是否能找到宝石。
过了半年,他已经麻木了,机械性地抱起石头,看了一下不是宝石,然后扔到海里。
就在他准备放弃的时候,这一天,他抱起一块石头,这是一块截然不同的石头,在灰色的表面下闪烁着灿烂的光芒,正如书上所描述的那样。
对,就是这块宝石,他心中激动万分,但是习惯的力量让他做出了一个莫名其妙的动作——把宝石扔到了海里。
当他反应过来之后,他跳入海中,却不见宝石的踪影。
这就是惯性对人们行为的影响。
当人们习惯于一种方式或行动时,就会发现自己很难改变它。
在生活中,你有没有类似的体会呢?每天吃完饭抽上一支香烟,如果今天不抽,就会感到极为不舒服。
你认为对的事情会一直去做,最后却发现,你的"认为"本身就是错的。
02为了采光的需要,也是为了安全的需要,在学校的楼梯转弯处都安装着透明的玻璃。
历经了漫长的暑假后,我们回到学校上班时,我发现在楼梯转弯处,都有蜜蜂尸横遍野的,让我好一阵痛惜。
我还看见有几只蜜蜂在玻璃上顽强地爬着,就是逃离不出去。
起初,我不明其理,只想着蜜蜂是那样的固执,一根筋,不会拐弯原路返回,只会在这里死磨烂缠,最终把自己给累死了。
多维Fuzzing技术综述
作者简介:吴志勇(1982一),男,江苏大丰人,博士,主要研究方向为网络安全、软件测试(wuzhiyon90127@gmail.corn);夏建军(1985一),男,硕士 研究生,主要研究方向为网络安全;孙乐昌(1951.),男,教授,博导,主要研究方向为网络安全、操作系统;张是(1966-),男,教授。主要研究方向为 通信信号处理、模式识别、智能计算.
Fuzzing;combination explosion;evolutionary testing;genetic algorithm
1989--2002年间的Fuzzing技术本质上是随机测试技术,
1
Fuzzing技术介绍
漏洞挖掘技术可以分为静态漏洞挖掘技术¨。3和动态漏
测试数据多数是随机产生的畸形数据¨‘7“引。随机测试技术难 以深入测试软件,也没有较高的代码覆盖率,所以会遗漏很多 漏洞。后来,Fuzzing测试呈现出两个不同的发展方向,即基于 知识的Fuzzing技术mo和基于软件测试技术的Fuzzing技 术嵋“。2002年,文献[22]首次提出把文件格式知识和协议知 识融入到了Fuzzing技术测试用例的构造当中,大大地提高了 Fuzzing测试用例的有效性,其开发的工具SPIKE旧。发现了许 多未知漏洞。2007年,文献[21,24—26]则通过把静态分析技 术、符号执行技术、具体执行技术等多种技术与Fuzzing技术相 结合,从而在达到一个较高的代码覆盖率的测试基础上进行 Fuzzing测试。基于软件测试技术的Fuzzing技术通过借助软 件测试中的技术使Fuzzing技术得到一个不错的代码覆盖率。 该方法的缺点是仍然无法克服符号执行中的状态爆炸问题,也 无法突破应用程序中的验证或检查(像固定字段、校验和、长 度计算、个数计算、hash值计算、加密解密算法等)进行更为深 人的Fuzzing测试;另外,该方法采用了类似于穷搜索的思路, 而且每次执行都需要复杂的符号运算,效率低。 基于知识的Fuzzing技术除了应用文件格式知识、网络协 议知识,还在构造测试用例的过程中应用到了漏洞知识,在知 识获取和知识应用上也存在不同的方法。知识的获取上可以
fuzzy方法
fuzzy方法(实用版3篇)目录(篇1)1.引言2.介绍模糊方法的基本原理和特点3.模糊方法的应用领域和优势4.模糊方法的优缺点5.结论正文(篇1)一、引言随着科技的不断发展,人工智能技术已经成为当今社会发展的重要趋势。
而在人工智能领域中,模糊方法是一种非常重要的算法。
本文将介绍模糊方法的基本原理和特点,并探讨其在各个领域中的应用。
二、模糊方法的基本原理和特点模糊方法是一种基于模糊数学的理论和方法,其主要特点是能够处理模糊的、不确定的信息。
在模糊方法中,使用了一个称为“隶属函数”的数学工具,用来描述一个对象属于某个集合的程度。
隶属函数可以是线性的或非线性的,可以根据具体问题进行调整。
三、模糊方法的应用领域和优势1.工业制造:在工业制造中,模糊方法可以用来解决复杂的问题,如质量控制、生产调度等。
通过建立数学模型,模糊方法可以自动地优化生产流程,提高生产效率。
2.医疗诊断:在医疗诊断中,模糊方法可以用来处理大量的数据,如医学影像、病理分析等。
通过使用模糊方法,医生可以更加准确地诊断疾病,提高治疗效果。
3.自然语言处理:在自然语言处理中,模糊方法可以用来处理不确定的信息,如语义理解、情感分析等。
通过使用模糊方法,可以提高机器翻译的准确性和情感分析的准确性。
4.交通管理:在交通管理中,模糊方法可以用来预测交通流量、制定交通规划等。
通过使用模糊方法,可以更好地掌握交通状况,提高交通管理水平。
5.其他领域:除了以上领域,模糊方法还可以应用于许多其他领域,如金融、环境科学等。
通过使用模糊方法,可以更好地处理复杂的问题,提高决策的准确性。
四、模糊方法的优缺点1.优点:(1)能够处理模糊的、不确定的信息;(2)可以自动地优化问题;(3)可以提高机器翻译的准确性和情感分析的准确性;(4)可以更好地掌握交通状况,提高交通管理水平。
2.缺点:(1)需要大量的计算资源;(2)可能存在“维数灾”问题;(3)需要具备一定的数学基础;(4)可能存在“过拟合”问题。
基于范式语法的工控协议 Fuzzing 测试技术
基于范式语法的工控协议 Fuzzing 测试技术张亚丰;洪征;吴礼发;康红凯;孙贺【期刊名称】《计算机应用研究》【年(卷),期】2016(33)8【摘要】针对工控协议 Fuzzing 测试存在测试脚本编写工作量大、测试用例的覆盖面小、测试效率低等问题,提出了一种基于范式语法的工控协议 Fuzzing 测试方法。
首先以改进的扩展巴科斯范式(modified augmented Back-us-Naur form,MABNF)来描述工控协议;然后根据范式语法模型,将报文样本解析为范式语法变异树,进而生成范式语法变异树的描述脚本;提出了基于 MABNF 变异树的测试用例生成算法(MABNF-mutation-tree based test-cases generating method,MTGM),先对 MABNF 变异树进行深度优先遍历,再采用语义变异策略对节点实施变异;最后利用 MTGM得到冗余少、有效性高的测试用例集。
使用该方法,实现了基于 Peach 的工控协议 Fuzzing 测试原型系统 M-Peach,对供水 SCADA 系统进行了测试。
与 Peach 的对比实验表明,所提出的方法能有效减少测试冗余,提高测试用例集的覆盖面和测试效率。
%Traditional fuzzing methods for the industrial control system have the shortcomings of heavy workload in writing scripts,small coverage of test cases and low efficiency in fuzz-testing.This paper proposed a new fuzzing method based on the form-syntax for the industrial control protocols.Firstly,it used MABNF to describe the industrial control protocols.Secondly, according to the description,it parsed the message samples into the form-syntax mutation tree structures,and generated the scripts of form-syntax mutation treestly,it used the MTGMalgorithm,which performed depth first traversal on MABNF-mutation-tree and then applied the semantic mutation strategy to the tree nodes,so as to reduce redundancy and generate more effective test ing this method,it implemented the fuzzing tool M-Peach for the industrial control proto-col based on Peach platform,and performed experiments on a water supply SCADA system.Experimental results show that, comparing with Peach,M-Peach can effectively reduce redundancy,increase the coverage of test cases and improve testing ef-ficiency.【总页数】7页(P2433-2439)【作者】张亚丰;洪征;吴礼发;康红凯;孙贺【作者单位】解放军理工大学指挥信息系统学院,南京 210007;解放军理工大学指挥信息系统学院,南京 210007;解放军理工大学指挥信息系统学院,南京210007;解放军理工大学指挥信息系统学院,南京 210007;解放军理工大学指挥信息系统学院,南京 210007【正文语种】中文【中图分类】TP309.2【相关文献】1.4G电信网络协议Fuzzing测试技术研究综述 [J], 熊琦;许源;张宝峰;刘晖;郭颖;张骁;王峰2.基于状态的工控协议Fuzzing测试技术 [J], 张亚丰;洪征;吴礼发;周振吉;孙贺3.基于混合符号执行的Fuzzing测试技术 [J], 陆萍萍;李慧;穆文思;韩青4.基于Fuzzing测试的工控网络协议漏洞挖掘技术 [J], 黄影;邹颀伟;范科峰5.基于智能Fuzzing技术的工控漏洞挖掘平台 [J], 黄敏; 王方立; 李之云因版权原因,仅展示原文概要,查看原文内容请购买。
路径依赖的主要原因
路径依赖的主要原因路径依赖(PathDependence)是指一个事件的发展受到以往的历史发展情况的影响,从而有助于它在未来的发展中累积更大的优势,赋予它以更强大的竞争优势。
本文将阐述路径依赖的分析模型及其主要原因。
一、路径依赖的分析模型路径依赖的分析模型有三个主要维度,即影响路径发展的因素、技术进步和技术改变。
1.影响路径发展的因素路径发展的因素主要包括:(1)经济因素,指的是例如宏观经济形势、行业结构及其他经济环境的变化;(2)市场要素,指的是消费者需求、竞争对手、投资者对技术进步的反应、国家政策等;(3)人力资源因素,指职工的能力和积极性。
2.技术进步技术进步是指技术在经历过一系列变化后,达到了一定的水平。
技术进步可以为路径发展提供基础和支撑,有利于拓宽路径发展的空间与可能性。
3.技术改变技术改变是指从技术角度出发,把一种技术的性能及其应用范围进行改进的过程。
技术改变可以改善技术的性能和应用范围,从而有助于路径依赖的发展。
二、路径依赖的主要原因1.因经济因素由于国家、市场和投资者的偏好及其他经济因素,企业产品会经历某一特定的发展路径,从而形成路径依赖。
例如,一家企业采用高科技产品技术来发展,那么其产品就会依赖于高科技技术,从而形成路径依赖。
2.因技术进步随着技术的进步,企业产品设计也会发生变化,可能会因此形成路径依赖。
例如,在计算机行业,当一家企业采用新技术发展产品时,它的产品就会因其所采用的技术而受到影响,并有可能形成路径依赖。
3.因技术改变随着企业对技术的不断改变,这也会影响企业对路径依赖的发展,直接或间接地形成路径依赖。
比如,当一家企业为了提升产品的性能而改变技术时,其产品就会受到影响,而产品的开发也会因此发生变化,从而形成路径依赖的局面。
综上所述,路径依赖的主要原因可以归纳为:经济因素、市场要素、技术进步和技术改变等因素。
经过就上述分析,可以看出,路径依赖是由多种原因共同作用的结果,而不是单一因素所导致的。
提高fuzzing边覆盖率的改进方法
收稿日期:2019−06−14;修回日期:2019−09−13 通信作者:王志,zwang@ 基金项目:国家自然科学基金资助项目(No.61972215, No.61702399, No.61972073, No.61872202);天津市自然科学基金资助 项目(No.17JCZDJC30500);赛尔网络下一代互联网技术创新基金资助项目(No.NGII20180401)
摘 要:针对 AFL 边覆盖不全、未充分利用边覆盖信息和有效字节信息的问题,提出了改进方法。首先,设计 了新的种子选择算法,在一轮循环中可完全覆盖所有已发现的边;其次,按边覆盖热度对路径评分,以此调整种 子的测试次数;最后,对有效字节进行更多的变异。基于上述方法实现了新的 fuzzing 工具—efuzz。实验表明, efuzz 的平均边覆盖数比 AFL 和 AFLFast 分别增加了 5%和 9%;在 LAVA-M 测试集中,efuzz 发现的漏洞数超过 了 AFL;在常用软件中,efuzz 发现了 3 个新的 CVE 漏洞。所提方法可以有效提高 fuzzing 的边覆盖率、提升漏 洞发现能力,具有实用性。 关键词:fuzzing 技术;漏洞;AFL;边覆盖 中图分类号:TP311.1 文献标识码:A doi: 10.11959/j.issn.1000−436x.2019223
Foundation Items: The National Natural Science Foundation of China (No.61972215, No.61702399, No.61972073, No.61872202), The Natural Science Foundation of Tianjin (No.17JCZDJC30500), CERNET Innovation Project (No.NGII20180401)
fuzzing过程中的若干优化方法研究
Fuzzing 优化方法研究摘要:Fuzzing 是一种软件测试技术,它主要用于发现软件中的漏洞。
本文探讨了几种Fuzzing 优化方法,以提高 Fuzzing 测试的效率。
首先,介绍了 Fuzzing 的工作原理。
然后,讨论了几种 Fuzzing 优化方法,包括基于输入数据生成的 Fuzzing、基于程序状态的 Fuzzing、基于负载的 Fuzzing 和基于行为的 Fuzzing。
最后,给出了一个实际的Fuzzing 优化策略,并介绍了一些 Fuzzing 测试工具。
关键词:Fuzzing;优化;软件测试1. 介绍Fuzzing 是一种软件测试技术,它主要用于发现软件中的漏洞。
它通过自动生成大量输入数据,来测试软件的可靠性和安全性。
Fuzzing 可以发现软件中的 bug,提高软件的可靠性和安全性。
Fuzzing 测试的效率取决于输入数据的质量,而输入数据的质量又取决于 Fuzzing 策略的合理性。
为了提高 Fuzzing 测试的效率,必须采取 Fuzzing 优化策略。
2. Fuzzing 优化方法(1)基于输入数据生成的 Fuzzing。
这种 Fuzzing 方法的核心是生成有效的测试数据,以便更有效地测试软件。
典型的输入数据生成方法包括基于统计学的方法、基于规则的方法、基于约束的方法和基于搜索的方法。
(2)基于程序状态的 Fuzzing。
这种 Fuzzing 方法的核心是通过模拟程序的运行状态,来构造有效的测试数据。
典型的程序状态 Fuzzing 方法包括基于程序分析的方法、基于模拟的方法和基于深度学习的方法。
(3)基于负载的 Fuzzing。
这种 Fuzzing 方法的核心是根据负载情况,来构造有效的测试数据。
典型的负载 Fuzzing 方法包括基于负载模拟的方法、基于负载模型的方法和基于负载分析的方法。
(4)基于行为的 Fuzzing。
这种 Fuzzing 方法的核心是根据软件的行为,来构造有效的测试数据。
基于控制流序位比对的智能Fuzzing测试方法
基 于控 制流序 位 比对 的智 能 F u z z i n g方法 的 总 体 思想 是在 对程 序进 行静 态预 分析 【 9 ] 、标 记预 设 【 1 o 1
和 动态 控制 流跟踪 【 1 的条件 下 ,首 先针对 每个 测试
种 导 向 性 由于 遗传 算 法 本 身 自组 织 、 自学 习 的特
第3 4卷第 4期
2 0 1 3年 4月
通
信
学
报
Vl o 】 . 3 4 NO . 4
J o u r n a l o n CO l I l r n u n i c a t i o n s
Ap i r l 2 0 1 3
d o i : 1 0 . 3 9 6 9 / j . i s s n . 1 0 0 0 — 4 3 6 x . 2 0 1 3 . 0 4 . 0 1 3
挖 掘 能力 。
关键词 :智 能 F u z z i n g ;控制流 ;遗传算法;漏 洞
中图分类号 :T P 3 9 3 . 0 8
文献标识码:B
文章编号:1 0 0 0 — 4 3 6 X ( 2 0 1 3 ) 0 4 . 0 1 1 4 . 0 8
S ma r t Fu z z i n g me t ho d b a s e d o n c o mp a r i s o n
p r o p o s e d b a s e d o n he t n o d e c o mp a r i s o n a l g o r i t h m a mo n g he t c o n t r o l f l o w s e q u e n c e s . T h r o u g h ma p p i n g p r o g r a m e x e c u —
基于反馈驱动的Fuzz工具设计
2020.32科学技术创新基于反馈驱动的Fuzz 工具设计赵晖(山东理工大学,山东淄博255000)1网络安全及漏洞挖掘简介随着Internet 网络规模的不断扩大,各种软件硬件的应用不断加入,随着互联网深入政治、经济、民生乃至军事的各个方面,安全漏洞不开避免,安全更是不能忽视的。
安全漏洞是指程序代码、协议、硬件在功能实现上的一种缺陷。
漏洞一旦被攻击者发现,就可以使目标机器拒绝服务(宕机)、在未授权的情况下执行任意代码、从一个比较低的权限获取更高的权限,用户的信息安全不能够得到保障。
近些年以来,软件数量和种类在不断的增加,软件的代码量也在不断地增加,漏洞挖掘就比较重要了。
当前,软件漏洞挖掘技术正在不断朝着高度自动化、智能化的方向进行发展,以模糊测试为代表的软件漏洞挖掘技术更是成为研究的热点。
2内存漏洞2.1栈溢出程序在运行的时候,每个函数都有一个函数运行栈,在栈中保存了函数运行时所使用的临时变量、缓冲区等信息,函数运行栈的范围通过基地址寄存器(EBP/RBP )跟栈顶寄存器(ESP/RSP )框定。
栈上除了临时变量外还有函数运行时缓冲区、函数运行时参数,在他们中间还有一个值是返回地址,这个地址一般表示为该函数执行完以后要执行的汇编指令的地址,如果这个值被攻击者恶意覆盖以后,就可以控制指令指令指针寄存器(EIP/RIP ),就可以控制代码流,就可以做到执行任意代码。
在使用一些输入函数,比如gets ()、read ()、scanf ()等函数时,如果没有对输入字符串长度进行验证,就会发生溢出。
2.2堆溢出在计算机中,堆与栈虽然都是用来保存数据的内存区域,但是这两个内存区域区别很大而且栈空间的生命周期是在函数运行时,但是堆内存空间可以贯穿在整个程序运行周期内。
假设程序申请了0x10的堆内存空间,但是输入0x50长度的字符串,因此可以导致溢出。
但是堆内存空间中没有相关数据、函数指针,因此该例子并不能劫持程序流,也就意味着程序可能会正常退出,一般方法无法捕获到该漏洞。
python中fuzzing库使用方法
python中fuzzing库使用方法Fuzzing 是一种针对软件安全性的测试技术,它通过输入随机、非预期或异常的数据来发现潜在的漏洞和错误。
Python 中有几个流行的 Fuzzing 库,可以帮助开发人员执行这种测试并增强软件的安全性。
下面我们将介绍几个常用的 Python Fuzzing 库及其使用方法。
1. AFL(American Fuzzy Lop):AFL 是一个强大的模糊测试工具,它可以通过对输入进行修改和变异,找出程序中的漏洞和崩溃点。
它使用基于覆盖率的测试策略来生成输入,以尽可能多地覆盖目标程序的代码。
在 Python 中使用 AFL,你需要将目标程序编译为可执行文件,并使用AFL 提供的工具对其进行模糊测试。
2. Peach Fuzzer:Peach Fuzzer 是一个功能强大的模糊测试框架,它支持多种协议和数据格式。
你可以使用 Peach Fuzzer 定义测试用例的结构、范围和约束条件,并指定模糊测试的策略。
它还提供了可视化界面和报告生成功能,方便你查看测试结果和分析漏洞。
在 Python 中使用 Peach Fuzzer,你需要安装框架并编写相应的配置文件来定义你的测试用例。
3. Sulley:Sulley 是一个 Python 编写的模糊测试框架,它使用TCP/IP 协议进行测试,可以针对网络应用进行模糊测试。
Sulley提供了一组丰富的 API,你可以使用它们定义自己的测试用例和模糊测试策略。
它还支持并发测试和分布式测试,可以在多台机器上同时进行模糊测试。
在 Python 中使用 Sulley,你需要安装框架并编写相应的代码来定义和执行你的测试。
这些是 Python 中几个常用的 Fuzzing 库及其使用方法的简要介绍。
选择适合你项目需求和技术能力的库,并遵循相应的使用方法来进行模糊测试,可以帮助你增强软件的安全性和稳定性。
记得在测试期间进行适当的监控和跟踪,及时处理漏洞和崩溃问题,以确保你的应用程序的质量和安全性。
基于改进DDPG的多AGV路径规划算法
基于改进DDPG的多AGV路径规划算法目录1. 内容综述 (2)1.1 研究背景 (2)1.2 研究目的 (4)1.3 文献综述 (4)1.4 问题提出与论文结构 (6)2. 多智能体系统(MAS)理论基础 (7)2.1 多智能体系统概述 (9)2.2 多智能体通信模型 (10)2.3 多智能体协同任务规划 (11)3. 深度确定性策略梯度算法(DDPG) (13)3.1 DDPG算法简介 (14)3.2 DDPG算法结构 (16)3.3 DDPG算法的训练与参数调整 (17)4. 基于改进DDPG的多AGV路径规划算法 (19)4.1 智能体交互模型设计 (20)4.2 多智能体协同路径规划的优化方法 (22)4.3 基于奖励机制的路径规划评估标准设计 (23)4.4 改进DDPG算法流程 (24)4.5 仿真实验设置与结果分析 (25)4.5.1 仿真环境搭建 (27)4.5.2 仿真数据与指标 (28)4.5.3 仿真对比实验 (29)5. 结论与展望 (31)5.1 主要贡献与创新点 (32)5.2 研究展望 (33)1. 内容综述本文档旨在深入探讨基于改进型深度确定性策略梯度(DDPG)算法的多自主导引车(AGV)路径规划技术。
现代社会对高效物流和自动化仓储的需求日益增长,而AGV在这一领域展现了巨大的潜力和应用价值。
要求增加的全局路径规划效率和实时更新的能力对传统的规划算法提出挑战。
我们研究并构建了一种新型的、结合强化学习技术的路径优化方案,该方案旨在提升调度决策的速度与质量。
改进DDPG算法通过引入先进的Q网络优化技术和动作重复机制,极大地削弱了传统DDPG算法的时序维度依赖,同时加强了对特定场景的适应能力。
在多AGV协同工作的实际情境下,该算法博客摆明了,目标是通过学习目标函数的稳定梯度,在确保安全的前提下,以最短路径完成货物运输,避免无用的转弯和冗余路径,从而提高吞吐量和资源利用率。
一种基于遗传算法的Fuzzing测试用例生成新方法
一种基于遗传算法的Fuzzing测试用例生成新方法刘渊;杨永辉;张春瑞;王伟【摘要】本文根据传统漏洞挖掘Fuzzing技术的特点,针对其存在的不能求解非线性解和只能有单个的输入的问题,提出了一种基于遗传算法的漏洞挖掘测试用例生成的新方法.该方法能够利用遗传算法的优势,同时可以应对多输入测试用例问题和非线性求解问题.从自测程序的结果看出,相比于传统随机生成Fuzzing测试用例的方法,本方案在效率和覆盖率方面具有明显的提高.%Considering the features of the traditional Fuzzing technology,a method is proposed for Fuzzing test case generating in vulnerability exploiting,which is aimed at nonlinear solution and single input problem.This method takes advantage of the genetic algorithm and deals with those two problems mentioned above.The experiment results show that,the proposed solution has an obvious improvement compared with the early method which generates the test cases randomly.【期刊名称】《电子学报》【年(卷),期】2017(045)003【总页数】5页(P552-556)【关键词】遗传算法;非线性求解;多维Fuzzing技术【作者】刘渊;杨永辉;张春瑞;王伟【作者单位】中国工程物理研究院计算机应用研究所,四川绵阳621900;中国工程物理研究院计算机应用研究所,四川绵阳621900;中国工程物理研究院计算机应用研究所,四川绵阳621900;中国工程物理研究院计算机应用研究所,四川绵阳621900【正文语种】中文【中图分类】TN311.5在目前各类软件的安全测试中,Fuzzing技术以其高度的自动化特性被广泛使用.但Fuzzing技术在测试的过程中具有很大的盲目性,当遇到巨大的测试用例空间时测试效率受到很大影响.特别是在求解非线性解和只能有单个输入这两方面具有很大的不足.本文将遗传算法的思想应用到Fuzzing测试用例生成的过程之中,参考历史进化信息,使用适应度函数来影响进化方向.在不影响Fuzzing测试高度自动化的前提下指导测试用例的生成规则,从而提高了Fuzzing测试的效率.最后通过设计实验证明了本方法(适应度函数构造方法)在提高测试效率方面的有效性.传统的漏洞挖掘主要使用Fuzzing测试技术,其基本框架如图1所示.目前常用的Fuzzing测试软件Spike能够克服静态挖掘的测试效率不高,漏报率高的问题,从而具有较好的测试效果[1~3].但是,由于传统Fuzzing技术[4~6]的测试用例是随机生成的,而在随机生成的测试用例中往往存在大量冗余无用的数据,占用了大量测试时间,造成系统资源的浪费,因此需要对以往Fuzzing测试用例的生成方法进行改进,提高生成有用测试用例的效率.目前相关研究针对的目标程序多只有一个输入,即待测程序变量只有一个,并且程序中的大部分判断条件基本上都是简单的加减法,即一般线性判断条件(如a*x+b<0).但在实际的漏洞挖掘中,往往输入变量并不止一个,并且分支语句、循环语句的判断条件也不一定满足线性,故而本文针对这种情况提出了新的解决办法.2.1 总体设计方案本文总体设计方案的框架如图2所示.在改进的Fuzzing测试过程中,通过控制流提取模块获取待测程序的控制流图,从中得到需要检测的目标函数.使用遗传算法通过交叉变异的方法以尽可能快的速度获取测试用例出发目标使其到达危险函数. 计算机程序一般由一些分支语句(如if-else),顺序语句,循环语句(如while/for)组成.在控制流的提取模块中,将程序的语句按照图3所示的三种方式进行提取,并构造程序的控制流图.通过控制流图,确定需要检测程序的“目标”(程序中任意需要检测的分支、语句,或函数),在此将其称之为所检测程序的危险函数.当一组输入能够到达这个“目标”,即危险函数时,称这个输入是一个“好的”输入,并将此输入作为检测程序漏洞的依据.在本设计中,通过遗传算法来快速生成这些输入,使得系统能够在最短的时间达到希望进入程序的目标.控制流分析模块的设计在2.2节中详述.通过多次试验比较得出的适应度函数Fitness(x)在遗传算法中使用,具体内容见2.3节.遗传算法交叉变异的方法在2.4节中给出.2.2 控制流分析模块软件的功能实现主要是通过一个个程序互相之间紧密协调运用来实现的,所以说分析程序是分析软件的基本[7].而程序的运行情况可以通过一些控制流图来表现,故而分析程序的控制流是漏洞挖掘技术的基本,程序的控制流可以用式(1)来表示其中,G为程序的控制流,N为控制流的基本块,D为控制流的危险函数基本块,E为基本块之间的路径,s为控制流的入口节点,e为控制流的出口节点.对于本文实验所分析的目标程序,具有20个控制流基本块,故N=20,每个基本块可能出现也可能不出现在控制流中,故E=220,控制流的危险函数基本快D=5.2.3 适应度函数构造模块适应度函数是指导测试用例生成的根本,是该测试用例在软件输入好坏的体现.它反映了各个测试用例的不同,如果适应度函数构造不好,使得不同好坏的测试用例具有相同的适应度函数值,或者使得适应度函数层次划分不够明确,这样就会影响到测试用例的结果,使得测试用例生成不明显.但过度希望适应度函数较高,这样就会使测试数据陷入过早收敛,使得种群多样性过小[7,8].所以,根据具体实验设计合适的适应度函数才是关键.本实验分析的进行测试的程序的控制流的有20个基本块,有5个危险函数.其中只有一条路径能把程序的危险函数全部覆盖.本实验构造的适应度函数见式(2)由于程序经过危险函数要比程序经过其他基本块要更重要,故而设危险函数D的权值比重是程序基本块N的k倍.Nmax是程序基本块的最大数目,在本实验待测程序为15,Dmax是程序危险函数的最大数目,本实验程序为5.如果程序运行完整个基本块,它的适应度函数的适应度值是最高的,为1.由于一些程序的约束条件是相互矛盾的,故而程序不可能执行完整个基本块,实际上我们只关心程序运行时是否经过危险函数,故而当程序经过5个危险函数我们就认为它是最好的.2.4 交叉变异模块交叉变异是整个遗传算法中数据改变的根本,选择合适的交叉变异方法对实验的效率起着重要的作用.现在遗传算法的运用往往只是单维度的优化,对于多维度的优化问题研究还有待提高.在漏洞挖掘过程中,输入数据不可能单维度,故而研究多维度的遗传算法交叉变异方法才符合实际应用的需要.在进行交叉变异方法时,先确定输入变量的个数n,这时每一代种群个数就为n*2+2.因为每一代中必须存储上一代中一个最好的种群,还要存储一个元素完全是变异值的种群,而且还要存储上一代中最好的种群分别和上一代中按随机轮盘方法选出的那个种群和上一代变异的种群交叉出来的2n个种种群.这样一代中就必须有n*2+2个种群.轮盘选择策略是先产生一个0到1的随机数,由于每一代中种群个数为n*2+2,对每一组种群分别分配一个在0和1之间的取值区间,例如第一组种群的取值区间为0到dist(1),第二代为dist(1)到dist(1)+dist(2).具体算法见式(3)其中,Fitness(i)为一代中第i个种群的适应度函数值.为了防止一代中用轮盘选择法抽到最好的种群,这样在这一代中交叉就没有意义了,故而如果抽到最好种群时,我们把他种群位数加1.由于本实验输入数据有4个,故而一代中种群个数为10,具体的交叉变异方法见图4.本文选取目标程序InterFlower.exe进行实验分析,此程序代码100行左右.程序包含4个独立不相关的输入:sig(0),sig(1),sig(2),sig(3),以此来模拟多输入程序.含有20个分支语句,其中一些分支的判断条件是线性的,另一些分支判断条件(如>5)是非线性的,以此来模拟针对非线性判断条件的目标程序.(1)k=5时,第1代中程序到达的基本块和危险函数的执行次数和覆盖率见表1.(2)第100代中程序到达的基本块和危险函数的执行次数和覆盖率见表2.(3)第278代中程序到达的基本块和危险函数的执行次数和覆盖率见表3.(4)随机测试5700代中程序到达的基本块和危险函数的执行次数和覆盖率见表4. 当然,这只是经过一次测试的结果,但由以上表格数据可以看出,用遗传算法生成测试用例每一代中在程序到达的基本块,危险函数的执行次数,覆盖率等方面都要比上一代要好,而且用遗传算法生成测试用例经过278代后就可以全部覆盖危险函数,而随机生成测试用例在5700代后才全部覆盖危险函数.在图5、图6中,我们给出遗传算法生成测试用例和随机生成测试用例经过每隔一定代数后的平均危险函数的执行次数和基本块的平均覆盖率比较图.从图中数据可以看出,遗传算法比随机生成操作对程序控制流的覆盖率要好,但是并不是十分明显.遗传算法相对与随机生成的方法来说,当进行遗传算法操作时,危险函数的执行每一代基本是上升的,而随机生成测试用例的危险函数的执行次数是随机有升有降的.所以说,我们所用的算法是可行的.从表中结果可以看出,在危险函数被执行一次的情况下,用遗传算法生成测试用例比随机生成测试用例大约提高15倍.这也说明说明了用遗传算法生成测试用例是可行的.从上述两个程序中用遗传算法进行测试和随机测试的进行对比我们可以看出,用我们遗传算法生成测试用例的方法是有效的.不论是非线性的,还是线性的,遗传算法的测试结果都要比随机生成的效率高很多.相对于其他方法来说要好.杨永辉(通信作者) 男,1973年4月出生于江西丰城,研究员,博士生导师,研究方向为信息对抗、软件安全测评.E-mail:***************张春瑞男,1980年2月出生于山西祁县,高级工程师,研究方向为网络与信息安全、大数据分析.E-mail:***************王伟男,1986年3月出生于山东滕州,工程师,研究方向为软件安全分析与漏洞检测.E-mail:**************刘渊男,1974年2月出生于四川自贡,高级工程师,研究方向为网络与信息安全、软件安全分析与漏洞检测.E-mail:**************【相关文献】[1]Chen J M,Shu H,Xiong X B.Fuzzing test approach based on symbolicexecution[J].Computer Engineering,2009,35(21):33-35.[2]万勇兵,徐中伟,梅萌.一种符号化执行的实时系统一致性测试生成方法[J].电子学报,2013,41(11):2276-2284. WAN Yong-bing,XU Zhong-wei,MEI Meng.A symbolic execution method for conformance test generation of real-time system[J].Acta Electronica Sinica,2013,41(11):2276-2284.(in Chinese)[3]Biyani,Aabha,Sharma,Gantavya,Aghav,Jagannath,et al.Extension of SPIKE for encrypted protocol fuzzing[A].Multimedia Information Networking and Security (MINES),2011 ThirdInternational Conference on IEEE[C].Shanghai1:IEEE,2011.343-347.[4]Bhansali S,Chen W K,Jong S D,et al.Framework for instruction-level tracing and analysis of program executions[A].Proceedings of International Conference on Virtual Execution Environments[C].New York:ACM,2006.154-163.[5]Song D,Brumley D,Yin H,et al.BitBlaze:A new approach to computer security via binary analysis[A].Proceedings of the 4th International Conference on Information Systems Security2008[C].Berlin,Heidelberg:Springer-Verlag,2008.1-25.[6]Wang T,Wei T,Gu G,et al.TaintScope:a checksum-aware directed fuzzing tool for automatic software vulnerability detection[A].Security and Privacy (SP),2010 IEEE Symposium on IEEE[C].Washington,DC,USA:IEEE Computer Society,2010.497-512.[7]Cui B,Liang X,Wang J.The study on integer overflow vulnerability detection in binary executables based upon genetic algorithm[J].Advances in Intelligent & Soft Computing,2011,122:259-266.[8]Memon A M,Pollack M E,Soffa M L.Hierarchical GUI test case generation using automated planning[J].IEEE Transactions on Software Engineering,2001,27(2):144-155.。
基于控制依赖路径覆盖的Fuzzing模型
基于控制依赖路径覆盖的Fuzzing模型王丹;潘强宗;朱鲁华【期刊名称】《计算机工程与设计》【年(卷),期】2012(33)8【摘要】为解决软件生产过程中存在的测试时间过长而导致成本急剧增长的问题,针对基于动静结合的Fuzzing方法中存在的缺陷,提出了基于控制依赖路径覆盖的Fuzzing模型.在该模型中,动态测试目标为静态分析提取的脆弱性语句.设计了一种基于两层相似度的适应度函数来指导遗传算法搜索覆盖控制依赖路径的测试用例,并在该测试用例基础上生成Fuzzing测试用例来验证脆弱性语句中的脆弱性,排除误报的脆弱性语句.该模型将有限的测试资源放在最可能出现漏洞的代码上,从而达到在增强Fuzzing方向性并保持高度自动化的同时提高测试效率的目的.%To solve the problem that the cost increasing too fast due to the increase of testing time in software production, a fuzzing model based on control dependence path coverage is proposed. In this model, vulnerable statements are extracted by using static analysis, and a fitness function based on two level similarity is designed to lead genetic algorithm to search test case which covers the control dependence path. For removing false positive vulnerable statement, Fuzzing test cases are generated based on the test case searched to validate the vulnerability in the vulnerable statement. By using the limited testing resources on the codes which most likely contain vulnerability, the model can avoid the blindness of Fuzzing and improve the efficiency of Fuzzing.【总页数】5页(P3078-3082)【作者】王丹;潘强宗;朱鲁华【作者单位】江南计算技术研究所,江苏无锡 214083;江南计算技术研究所,江苏无锡 214083;江南计算技术研究所,江苏无锡 214083【正文语种】中文【中图分类】TP311【相关文献】1.基于退火算法的Fuzzing漏洞挖掘用例生成模型 [J], 程永新;廖竣锴;万抒2.基于模型的Fuzzing测试脚本自动化生成 [J], 侯莹;洪征;潘瑶;吴礼发3.基于Fuzz测试的IMS网络SIP漏洞挖掘模型 [J], 刘树新;彭建华;刘彩霞;谢晓龙4.基于Fuzzing的Web控件漏洞检测改进模型 [J], 周美秀;俞洁;姚国祥5.基于遗传算法的Fuzzing测试用例生成模型 [J], 王丹;高丰;朱鲁华因版权原因,仅展示原文概要,查看原文内容请购买。
基于符号化执行的Fuzzing测试方法
基于符号化执行的Fuzzing测试方法陈建敏;舒辉;熊小兵【期刊名称】《计算机工程》【年(卷),期】2009(035)021【摘要】This paper designs and implements an approach of Fuzzing test based on symbolic execution. The path constraints are collected and generated through code instrumentation during the application execution, and new path constraints are generated with a search algorithm and solved, which constructs new inputs that can steer the application to follow alternative execution paths. An improved taint analysis mechanism is presented to optimize the path constraints. This approach improves the code coverage and the vulnerabilities exploiting efficiency.%设计并实现一种基于符号化执行的Fuzzing测试方法.通过代码插装,在程序执行过程中收集路径约束条件,依据一定的路径遍历算法生成新路径约束条件并进行求解,构造可以引导程序向新路径执行的输入测试数据.提出一种改进的污点分析机制,对路径约束条件进行简化,提高了代码覆盖率和漏洞检测的效率.【总页数】3页(P33-35)【作者】陈建敏;舒辉;熊小兵【作者单位】解放军信息工程大学信息工程学院,郑州,450002;解放军信息工程大学信息工程学院,郑州,450002;解放军信息工程大学信息工程学院,郑州,450002【正文语种】中文【中图分类】TP311【相关文献】1.基于控制流序位比对的智能 Fuzzing 测试方法 [J], 王颖;杨义先;钮心忻;谷利泽2.一种自动机学习和符号化执行的软件自动测试方法 [J], 陈曙;叶俊民;张帆3.基于混合符号执行的Fuzzing测试技术 [J], 陆萍萍;李慧;穆文思;韩青4.一种基于协议字段分类的工业控制系统Fuzzing测试方法 [J], 高志远;刘金永;王勇;刘蔚5.基于库函数动态跟踪的Fuzzing测试方法 [J], 黄奕;曾凡平;曹青因版权原因,仅展示原文概要,查看原文内容请购买。
基于Fuzzing的软件漏洞发掘技术
Value Engineering色空间变换转为计算机可处理的数字信号,使得计算机可以显示和处理视频信号。
目前采样格式有两种:Y:U:V4:1:1和Y:U:V4:2:2,前者是早期产品采用的主要格式,Y:U:V4: 2:2格式使得色度信号采样增加了一倍,视频数字化后的色彩、清晰度及稳定性有了明显的改善,是下一代产品的发展方向。
视频编码技术是将数字化的视频信号经过编码成为电视信号,从而可以录制到录像带中或在电视上播放。
对于不同的应用环境有不同的技术可以采用。
从低档的游戏机到电视台广播级的编码技术都已成熟。
5结束语多媒体的含义就是把电视式的视听信息的传播能力与计算机能够有效的结合起来,创造出新型的信息处理模式,使计算机具有可控制和传输多媒体电子邮件、电视会议等视频传输的功能,使之完全标准化和实用化,以此成为这场新技术革命的重大课题。
世界很大,却也很小,这句话说得很对,多媒体技术就使人们跨越时空了解到天文地理、古往今来、各地的风土人情。
但是随着人们生活水平的提高,从多媒体的发展不难看出,通讯、数字声像技术、网络电视、3G、MP4、MP5等等,这些都体现了人类文明的进步。
参考文献:[1]徐洪珍,周书民.基于MVC的分布式网络付费平台的设计与实现[J].计算机与现代化,2006(01).[2]顾伟泉.数字版权管理的技术体系分析[J].情报杂志,2004(10).[3]王法涛.数字权限管理技术(DRM)应用研究[D].吉林大学,2006.[4]刘飞.基于存储卡的数字版权管理系统的研究及设计[D].北京邮电大学,2006.[5]华宇.J2EE设计模式及其在企业信息系统中的应用研究[D].浙江工业大学,2006.[6]陈凯.P2P网络环境中基于文件的数字版权管理系统[D].上海交通大学,2007.[7]刘健.数字音像内容智能终端系统研究与设计[D].电子科技大学,2008.[8]纪雅莉.音频数字水印技术在数字版权管理中的应用研究[D].武汉理工大学,2006.[9]武淑云.库车电视台媒体资产管理系统的构建和应用[J].有线电视技术,2011(08).[10]杜燕青.浅谈电视节目制作新技术[J].电脑知识与技术,2011(19).0引言近年来,随着软件产业的高速发展,软件的安全漏洞问题也愈发的暴露出来,越来越多的网络黑客行为起源于软件中存在的安全漏洞。
各类Fuzz软件
各类Fuzz软件众所周知,模糊测试技术已经成为了测试软件质量的重要⼿段。
基于模糊测试技术开发的测试⼯具有很多,其中最长被使⽤⽽且改进也是最多的⼀个⼯具就是AFL(American Fuzz Lop). 本篇⽂章不会赘述如何安装afl,以及如何使⽤afl进⾏简单的fuzz。
由于很多被测程序都有⾃⼰的⼀个⼊⼝,⽽这些⼊⼝有的⼗分清晰,有的则很难挖掘到。
为了解决这个问题,有许多软件项⽬在⾃⼰的代码中会给出⼀个⽤于测试的程序,⼀般叫做test-driver,这个程序⾥⾯实现了该软件项⽬的⼀些主要函数和⽅法,可以⽤来对整个软件项⽬进⾏测试。
但是,⼤部分的test-driver是⼀个shell脚本,⽽afl是⽆法对⼀个shell脚本进⾏fuzz的。
为了解决这个问题,我们可以变换⼀种⽅法来进⾏脚本的fuzz。
具体操作过程如下:⼀. 下载安装shc在Makefile⾥⾯,观察⼀下CC是否是afl-gcc,如果想加ASAN模式,在CFLAG后⾯添加 -fsanitize=address。
make在编译之后,安装:make install⼆. 测试shc在src⽬录下可以看到⽣成的可执⾏⽂件shc,我们随便找⼀个脚本来测试⼀下,在shc/test/ ⽬录下,有若⼲测试脚本,我们利⽤pru.sh这个⽂件进⾏测试,将pru.sh copy到当前⽬录下:cp ../test/pru.sh ./之后运⾏:./shc -f ./pru.sh ./out-f参数指定了要转化的脚本⽂件,第⼆个参数是输出⽂件,我们来看⼀下它们的⽂件类型:1)第⼀个pru.sh⾃然不必说,是shell⽂件:2) out⽂件是⼀个可执⾏⽂件:三. fuzz ⼀个shell脚本有了⽤afl-gcc编译安装好的shc,我们就可以fuzz⼀个shell脚本⽂件了。
具体做法也⼗分简单,对于⼀个软件项⽬来说,⽤afl-gcc编译插桩整个程序,之后,利⽤刚刚的⽅法编译安装好shc,然后利⽤shc将test-driver转化为⼀个C编译成的可执⾏⽂件,这⾥的编译器⽤的还是afl-gcc,这样就给驱动程序进⾏了插桩编译。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
摘 要 :为解决软件生产过程 中存在的测试时 间过长而导致成 本急剧增 长 的问题 ,针对基 于动静 结合 的 F zig方 法 中存 uz n 在的缺 陷,提 出了基 于控制依赖路径覆盖的 F zi uz g模型 。在该 模型 中,动 态测试 目标 为静 态分析 提取 的脆弱 性语 句。设 n 计 了一种基 于两层相似度 的适应度 函数 来指导遗 传算 法搜 索覆盖控 制依 赖路 径的 测试 用例 ,并在 该测 试用例 基础 上生 成 F zig测试 用例 来验证脆弱性语 句中的脆 弱性 ,排 除误报 的脆 弱性语 句。该模型将 有 限的测试 资源放在 最可 能 出现 漏洞 uz n
21 年 8 02 月
计算机工程与设计
COM PUTER ENGI NEERI NG AND DES GN I
Au . 0 2 g 2 1
第 3卷 3
第 8 期
V0 3 NO 8 L3 .
基 于 控制 依 赖 路 径 覆 盖 的 F zig 型 uz 模 n
王 丹 ,潘强宗 ,朱鲁华
的代 码 上 ,从 而达 到 在 增 强 F zig方 向性 并保 持 高度 自动化 的 同时提 高 测 试 效 率 的 目的 。 uz n
关键词 :F zi uz g技 术;控制依赖路径 ;静 态分析 ;遗传算法 ;相似度 n
中 图 法分 类 号 : P 1 文 献 标 识 号 :A 文 章 编 号 :1 0—0 4 (0 2 0 —0 80 T 31 0 07 2 2 1) 83 7 —5
zn d l a e n c n r l e e d n e p t o e a e i p o o e . I h s mo e ,v l e a l t t me t r x r c e y u i g ig mo e s d o o to p n e c a h c v r g s r p s d n t i d l u n r b e sa e n s a e e ta t d b sn b d s a i n l s ,a d aft e sf n t n b s d o wo lv ls lrt e in d t e d g n t l o i m o s a c e tc s ih t t a ay i c s n i s u ci a e n t e e i a i i d sg e o la e e i a g r h t e r h t s a e wh c n o mi y d n ep t .F rr mo i g f le p st e v l e a l t t me t u zn e tc s sa eg n r t d b s d o o e s t e c n r ld p n e c a h o e v n as o ii u n r b e s a e n ,F z i g t s a e r e e a e a e n v t e t s a e s a c e o v l a e t e v l e a i t h u n r b es a e e t h e tc s e r h d t a i t h u n r b l y i t ev l e a l t tm n .Byu ig t e l td t s i g r s u c so h o e d i n sn h mie e t e o r e n t e c d s i n wh c s i ey c n an v l e a i t ,t e mo e a v i h l d e so u zn n ih mo tl l o t i u n r b l y h d l n a o d t e b i n s fF z i g a d i r v h fiin y o u zn . k i c n mp o e t e e f e c fF z i g c Ke r s F z i g t c n q e o t o e e d n e p t y wo d : u zn e h iu ;c n r ld p n e c ah;s a i a a y i ;g n t l o i m ;s i r y t t n l ss e e i ag rt c c h i l i m a t
( in n n I siu eo o u ig Te h oo y Ja g a n ttt fC mp tn c n lg ,W u i 1 0 3,Chn ) x 4 8 2 ia
Ab ta t To s l e t ep o l m h t h o ti c e sn o a td et h c e s ft s ig t o t r r d ci n u - sr c : o v h r b e t a ec s r a i g t o fs u o t e i r a e o e tn i i s fwa ep o u t ,af z t n n me n o
Fu zn d lb s d o o to e e d n e p t o e a e z i g mo e a e n c n r l p n e c a h c v r g d
W ANG n AN a g z n Da ,P Qin —o g,ZHU — u Lu h a