欢迎访问一起赢论文辅导网
本站动态
联系我们
 
 
 
 
 
 
 
 
 
 
 
QQ:3949358033

工作时间:9:00-24:00
机械论文
当前位置:首页 > 机械论文
面向递增累积型缺陷的灰盒模糊测试变异优化
来源:一起赢论文网     日期:2023-09-17     浏览数:241     【 字体:

 面向递增累积型缺陷的灰盒模糊测试变异优化*杨 克1,2, 贺也平1,2,3, 马恒太1,2, 董 柯1,2, 谢 异1,2, 蔡春芳1,21(中国科学院 软件研究所 基础软件国家工程研究中心, 北京 100190)2(中国科学院大学, 北京 100049)3(计算机科学国家重点实验室 (中国科学院 软件研究所), 北京 100190)通信作者: 贺也平, E-mail: yeping@iscas.ac.cn; 马恒太, E-mail: hengtai@iscas.ac.cn摘 要: 大量访问越界、内存耗尽、性能故障等缺陷是输入中有效数据的规模过大, 超过临界值引起的. 而现有灰盒模糊测试技术中的数据依赖识别和变异优化技术大都针对固定规模输入数据格式, 对规模递增输入数据的构造效率不高. 为此, 针对这类累积型缺陷模糊测试对应的状态特征值最优化问题, 提出了一种对特征值依赖的输入数据的格式判别和差分变异方法. 根据引发特征值最值更新的有效变异的位置分布和发现频次特征, 判别待发现缺陷状态优化是否依赖于输入中相关数据规模的增长, 将引发最值更新的有效变异内容应用于规模递增输入数据生成, 提升该类累积型缺陷的复现和定向测试效率. 依据该思想, 实现了模糊测试工具Jigsaw, 在测评实验数据集上的实验结果表明提出的判别方法能够高效地区分特征值依赖的输入数据组织形式, 且提出的差分变异方法显著提升了需要大量输入才能触发累积型缺陷的复现效率.关键词: 定向测试; 最优化; 累积型缺陷; 规模递增; 格式判别; 差分变异中图法分类号: TP311中文引用格式: 杨克, 贺也平, 马恒太, 董柯, 谢异, 蔡春芳. 面向递增累积型缺陷的灰盒模糊测试变异优化. 软件学报. http://www.jos.org.cn/1000-9825/6491.htm英文引用格式: Yang K, He YP, Ma HT, Dong K, Xie Y, Cai CF. Mutation Optimization of Directional Fuzzing for CumulativeDefects. Ruan Jian Xue Bao/Journal of Software (in Chinese). http://www.jos.org.cn/1000-9825/6491.htmMutation Optimization of Directional Fuzzing for Cumulative DefectsYANG Ke1,2, HE Ye-Ping1,2,3, MA Heng-Tai1,2, DONG Ke1,2, XIE Yi1,2, CAI Chun-Fang1,21(National Engineering Research Center of Fundamental Software, Institute of Software, Chinese Academy of Sciences, Beijing 100190,China)2(University of Chinese Academy of Sciences, Beijing 100049, China)3(State Key Laboratory of Computer Science (Institute of Software, Chinese Academy of Sciences), Beijing 100190, China)Abstract: Many quantifiable state-out-of-bound software defects, such as access violations, memory exhaustion, and performance failures,are caused by a large quantity of input data. However, existing dependent data identification and mutation optimization technologies forgrey-box fuzzing mainly focus on fixed-length data formats. They are not efficient in increasing the amount of cumulated data required bythe accumulated buggy states. This study proposes a differential mutation method to accelerate feature state optimization during thedirected fuzzing. By monitoring the seed that updates the maximum or minimum state value of the cumulative defects, the effective mutateoffset and content are determined. The frequency is leveraged and the distribution of the effective mutation is offset to distinguish whetherthe feature value of the defect depends on a fixed field or cumulative data in the input. The effective mutation content is reused as amaterial in the cumulative input mutation to accelerate the bug reproduction or directed testing. Based on this idea, this study implementsthe fuzzing tool Jigsaw. The evaluation results on the experimental data set show that the proposed dependency detection method canefficiently detect the input data type that drives the feature value of cumulative defects and the mutation method significantly shorten the* 基金项目: 中国科学院战略性先导科技专项(XDA-Y01-01, XDC02010600)收稿时间: 2021-03-14; 修改时间: 2021-06-17; 采用时间: 2021-08-30软件学报 ISSN 1000-9825, CODEN RUXUEW E-mail: jos@iscas.ac.cnJournal of Software [doi: 10.13328/j.cnki.jos.006491] http://www.jos.org.cn©中国科学院软件研究所版权所有. Tel: +86-10-62562563网络首发时间:2022-11-15 09:38:21网络首发地址:https://kns.cnki.net/kcms/detail/11.2560.TP.20221113.1456.059.htmlreproduction time of the cumulative defect that requires a large amount of special input data.Key words: directed fuzzing; optimization; cumulative defects; cumulative input; format discrimination; differential mutation1 引 言近几年, 基于变异的模糊测试技术AFLHongFuzz LibFuzzer[1]等在各种类型软件的漏洞挖掘中取得了很好的效果. 但现代软件非常庞大, 进行完整程序测试非常耗时. 随着研究的深入, 越来越多的学者开始关注面向错误复现、变更代码测试[2,3]或特定类型缺陷检测[47]等特殊场景下的定制化模糊测试问题. 使用待发现缺陷状态的位置、代码、状态变化等特点优化模糊测试的设计, 提高测试有针对性, 已经成为当下灰盒模糊测试研究的新热点.相比传统模糊测试, 该类应用仅关注于目标缺陷或代码相关的部分程序逻辑切面, 因此利用目标相关特征缩小分析和测试范围, 提高测试效率, 是该类应用问题特有的研究内容. 缺陷特征导向的灰盒模糊测试将目标缺陷检测问题转化为种子的最优化问题. 其通过刻画目标缺陷相关特征, 构造关于种子的最优化函数, 并改进种子度量,优化种子生成, 从而提升目标缺陷的检测效率.许多研究[812]指出集成在AFL 等流行模糊测试工具中的随机种子变异方法很难求解某些特殊值约束. 如果缺陷状态依赖大量特殊值输入, 传统的随机变异方法就很难发现. 访问越界[13] (CWE-787/CWE-125/CWE-788/CWE-124)、内存耗尽[4]、性能故障[14,15]等缺陷是因某些状态累积效应超过阈值时产生的(累积型缺陷). 如果缺陷状态依赖于大量特殊的输入, 就会因搜索空间过大, 有效数据占比较少而很难被随机变异策略发现. 我们对Wen等人[4]在内存耗尽型缺陷检测工作实验评估中的数据进行了分析. 发现, 在相同的工具(随机变异策略也相同) ,少部分缺陷的复现时间为几分钟, 而大部分缺陷的复现时间为数小时甚至超过一天. 在性能故障缺陷检测案例[14]以及CVE 官网中访问越界相关漏洞的检测报告中也发现了类似的现象.进一步分析发现, 复现时间的长短与缺陷状态所依赖的输入数据形式密切相关. 一些缺陷状态由输入中的个别字节直接决定, 表征缺陷状态逼近程度的目标函数值会因这些字节内容的改变而大幅变化. 传统的随机变异生成每个种子时通常会进行大量的变异操作, 缺陷依赖的字节很容易在该过程中发生改变, 从而较快地实现对目标函数值的搜索优化. 而另一些缺陷在输入中有效数据超过一定规模时才触发, 每个有效数据元素对累积效应(目标函数值) 的增幅有限. 此时, 需要在更大的输入空间内搜索缺陷依赖的有效输入内容, 而且基于大量随机变异生成新种子的传统策略很容易破坏既有的有效数据, 由于搜索空间非常大, 对输入内容要求更苛刻, 传统随机变异方法很难触发这类依赖有效数据规模增长的累积型缺陷.现有的面向访问越界、内存耗尽、性能故障等缺陷的模糊测试工作, 主要利用反映缺陷状态逼近度的数值特征作为待优化的目标函数, 通过改进遗传算法中的种子生成策略, 促进缺陷状态向临界值逼近从而触发缺陷. 这些数值状态特征包含内存占用[4]、执行路径长度[5]、控制流频次[14]CPU 占用率[15]或危险的API 或语句的覆盖比率等[1618]. IJON[19]提供了定制目标函数的原语和爬山优化机制, 允许测试人员利用程序中的变量或表达式定制指派待优化的变量或函数表达式. 然而, 这些研究工作并未对数值状态所依赖的输入形式做区分, 大都采用一种随机变异策略. 如果缺陷状态依赖于大量包含特殊内容的输入, 随机变异产生有效输入概率就很低.现有对变异策略的优化研究主要关注筛选有效变异位置[20]或变异算子[21,22], 对有效变异内容的研究较少. 对固定字段导致的缺陷, 有效的变异位置存在复用价值, 但累积输入数据引发的缺陷需要增长数据规模以产生累积效应, 反复变异固定位置反而不利于该类缺陷的检测. 例如文献[4] 中递归深度过深引发的内存耗尽缺陷CVE-2018-17985. 其依赖于重复的关键词“P”的个数, 而不是个别固定位置字符“P.现有关注输入内容构造的模糊测试工作的研究问题主要是分支比较条件中苛刻字段内容识别, 其目的是增加覆盖率. 由于研究问题不同, 这些工作所提出的方法应用到对规模增长驱动的累积型缺陷的检测上还存在一定困难. 例如, 关注苛刻分支测试的工作[812]通过锚定特定的分支比较条件来定位其用到的数据字段, 并根据比较常量确定满足苛刻条件的字段内容, 利用污点分析[8,12,23,24]或者输入变化与程序状态的关联分析[10,11]定位比较条件依赖2 软件学报的数据字节. 但是, 累积型缺陷常常依赖于大量的循环和递归计算, 逐个对每一次比较运算进行分析的时间和空间开销都是不可接受的. 污点分析等方法则在遇到循环依赖时会产生过污染和欠污染等问题, 因此这些方法并不适合用在依赖规模增长的累积型缺陷检测上. ProFuzzer[25]根据对不同字节值导致的执行路径长度的统计分析(Probing) 来定位输入中的循环计数字段(loop count) 和数据大小字段(size). 该方法可以用来检测这两种固定字段引发的累积型缺陷. 但是, 可变规模输入数据的有效变异位置往往并不固定, Probing 方法也无法有效检测出可变规模输入数据的关键内容, 因此该方法仍然难以直接用于可变输入格式依赖的检测.由于有效输入数据规模决定了搜索空间的大小, 也决定了随机搜索难易, 本文将累积型缺陷按照其状态的累积效应是否依赖于实际有效数据规模增长进行分类, 将累积型缺陷分为输入规模递增累积型(递增累积型) 和输入规模固定累积型(固定累积型) 两类. 由于二者的数据组织形式和搜索空间差异巨大, 因此需要分别设计变异策略.本文将反映种子与累积型缺陷状态逼近程度的度量值称为特征值, 累积型缺陷的检测问题可以视为是种子特征值的最大化问题. 本文分析了访问越界、内存耗尽、性能缺陷中固定累积型缺陷和递增累积型缺陷的差异, 发现固定累积型缺陷的特征值依赖于个别字节, 同一个字节取值变更可能导致特征值的多次最值更新, 反映递增累积型缺陷的特征值依赖于内容出现的频次, 同一个字节的内容变化通常仅带来一次最值更新. 因此有效变异位置被检测到的频次越少、分布越分散, 越表明该最优化问题是由规模递增输入驱动的. 在此基础上利用有效变更的位置分布和频次特征, 提出了一种区分待检测累积型缺陷依赖于固定的输入规模(固定累积型特征值) 还是依赖于有效输入规模的增长(递增累积型特征值) 的判定方法. 针对递增累积型缺陷, 提出了一种基于种子差分的有效变异策略.首先, 根据待复现或待检测累积型缺陷的代码特征确定其特征值和其对应的变量或表达式, 以该表达式为参数在相应位置插入IJON 最优化原语. 其次, 在测试时根据IJON 原语捕获的特征值更新反馈, 收集随机交叉变异的过程有效种子的修改规则, 包含修改位置以及修改后的内容. 并对修改规则进行清洗, 去掉无关修改. 结合同一字节引发的目标函数最值更新次数以及引发最值更新的字节分布情况来区分待检测缺陷的特征值类型(固定累积型特征值还是递增累积型特征值). 最后, 根据最优化问题依赖的输入形式, 应用不同的变异策略. 特别地, 对递增累积型特征值的最优化, 本文根据引起最值更新种子的差分内容获得递增累积型特征值依赖的输入素材. 借助规则清洗, 将有效变化内容作为字典值以较大的概率应用到后续的交叉变异中, 并贪心地应用成功率高的变异内容,从而加速递增累积型缺陷依赖的输入数据的生成. 为了避免种子生成时变异次数过多破坏既有的累积输入内容,对递增累积型缺陷采用较低的变异次数来生成后代. 最后, 通过实验表明本文提出的变异优化策略提高了递增累积型缺陷检测效率.主要贡献如下:(1) 提出了规模递增输入数据导致的缺陷问题. 根据有效变异位置和频次特征, 给出了一种对该类输入依赖形式判别的方法, 能够快速有效地区分其依赖于规模递增还是规模固定的输入数据.(2) 提出了一种基于差分进化的变异策略, 比随机变异更加高效地生成特征值最优化所需的规模递增输入数据, 从而加速递增累积型缺陷的复现和检测.(3) 实现了基于上述识别方法和变异策略的原型系统Jigsaw. 实验显示本文提出方法的识别开销小于5%, 且够准确地区分出待优化特征值依赖的输入数据格式. Jigsaw 在复现临界值越界类缺陷中的递增累积型缺陷时能够比传统随机变异策略有3 倍以上的效率提升.2 问题分析本节通过一个案例来说明引发最优值更新的差异数据有助于提升递增累积型缺陷的发现效率.1. Liblouis UTF 解码时边界检查与操作顺序不当引发的越界访问缺陷CVE-2018-11683.1 显示了CVE-2018-11683 的缺陷补丁. 该缺陷因在解析UTF-8 字符进行特殊的UTF-32 转换处理时边界检查滞后导致的循环写越界. 1 中缺陷代码1158 行对数组索引out 的边界检查应该放在1156 行的内存访问之杨克 等: 面向递增累积型缺陷的灰盒模糊测试变异优化3前才能起到有效的边界保护. 1 代码中token->chars[in] 来自于输入内容, token->chars[out] 则用于存储解析后的结果. 输出缓冲区的最大长度是MAX_STRING=2048. 在处理正常的UTF-8 内容时的边界检查已经充分. 但是当token 足够长且包含足够多的非UTF-8 内容就会触发访问越界缺陷. 这些非UTF-8 内容主要由取值为FF ,FE 的字节构成. 这是一个典型的递增累积型缺陷.115311541155115611571158115911601161116211631164115311541155115611571158115911601161116211631164@@ 1153,12 +1153,12 @@ parseChars(FileInfo *nested, CharsString *result, CharsString *token) {}utf32 = (utf32 << 6) + (token->chars[in++] & 0x3f);}if (CHARSIZE == 2 && utf32 > 0xffff) utf32 = 0xffff;result->chars[out++] = (widechar)utf32;// IJON_MAX(out);if (out >= MAXSTRING) {result->length = lastOutSize;return 1;}+ if (CHARSIZE == 2 && utf32 > 0xffff) utf32 = 0xffff;+ result->chars[out++] = (widechar)utf32;}result->length = out;return 1;1 CVE-2018-11 683 的补丁为了验证导致最值函数更新的种子增量的内容是否可复用, 将输出目录中ijon_max 子目录中引起最值更新的相邻种子差异(radiff2 -O 的输出) 加入AFL 的字典中(对应图2 中的IJON'), 并与不使用字典数据的IJON 进行对比试验. 为了研究随机变异次数对递增规模数据构造效率的影响, 我们构造了一个Havoc 阶段的循环变异次数仅为4 次的版本IJON'' (对应图2 中的IJON'').4003503002502001501005008 16 24 32 40 48 56 64 72 80 88 96删除字节数复现时间 (s)IJONIJON'IJON''2 CVE-2018-11 683 初始种子构造时删除POC 的字节数以及复现时间初始种子通过删除POC 上与缺陷有关的字节来构造, 删去POC 上与缺陷相关的那个token (总长1 328) 偏移0x55a 处的连续n{8, 16, , 96}个字节, 并以不同的初始种子为起始分别运行试验. IJON 最大化反馈原语,IJON_MAX(out); ”插入到缺陷版本代码文件CompileTranslationTable.c 1 157 . 使用AFL -S 选项(跳过确定性测试阶段), 并对每个种子实验10 次取复现时间的平均值.得到的平均复现时间如图2, 其中白色左斜纹、黄色右斜纹和蓝色网格柱分别对应IJONIJON'IJON''在不同初始种子下对CVE-2018-11 683 的复现时间. 可以看出, 使用引起最值更新的种子差异作为字典素材缩短了复现时间, IJON'IJON 平均快2 . 而缩短Havoc 阶段变异频次的IJON''则比IJON 6 倍以上.该案例表明, 检测或复现依赖输入数据规模递增的累积型缺陷时, 降低灰盒模糊测试变异频率, 复用引发缺陷特征值更新的增量数据片段有助于提高缺陷检测效率. 由于IJON 不能有效地感知到待优化目标函数是否依赖于有效输入数据的规模, 导致其对递增累积型缺陷构造输入内容时较为盲目, 触发效率较低.4 软件学报与临界值有关的缺陷, 如访问越界、内存耗尽和性能缺陷等, 可以转化为数值状态的最值问题. 如果该度量的粒度够细, 就可以监控最值更新确定有效的累积素材. 这些有价值的输入素材不仅可以应用于构造连续形式的累积输入, 对递归等复杂的累积输入格式内容的构造同样有效.3 面向递增累积型缺陷的复现方法3.1 方法原理累积型缺陷时因为某个内部状态超过阈值引起的. 因此此该类问题通常可以转化为该数值特征的最优化问题. 该问题较适合在灰盒模糊测试框架下借助一定的反馈信息来求解. IJON[19]提供了供测试人员定制其需要进行最值优化的表达式的最值反馈原语(IJON_MAX/IJON_MIN). 当程序触发插入的IJON 语句时, 就会触发IJON 的种子调度策略, 进行爬山优化. IJON 通过单独存储使得数值特征增长的种子, 并挑选数值最优的种子进行优先变异. 在待发现累积型缺陷数值状态变量已知(或已知如何构造) 的前提下可以用IJON 提供的最优化机制来解决.在这种最优化模型下, 依赖输入规模固定的目标函数(例如, 依赖于个别整数字段), 输入中影响目标函数变化的字节比较集中, 同一个字节取值变更通常会引起目标函数值的多次更新; 而依赖输入规模递增的目标函数, 输入中目标函数变化的字节比较分散, 且大量字节的取值变化仅能影响到目标函数值的1 次更新. 通过该特点可以区分目标函数对输入的依赖, 从而对不同类型特征值的优化问题分别采用不同的变异策略.针对递增累积型特征值的优化问题, 本文根据其依赖的增量数据大都存在一定重复性的特点, 提取引起特征值更新的种子与更新前最值种子的差异内容, 并进行复用. 在后续种子的变异中, 提升插入以及替换这些复用内容的变异算子应用概率, 从而加速种子的进化, 提高优化效率.3.2 目标函数的构造本文假设可以提前获得累积型缺陷对应的特征值最优化函数表达式E (例如, 通过静态分析报告或者缺陷报告和补丁信息获得). 目标函数IJON_MAX(E) IJON_MIN(E) 两个最值原语公式来指派. 具体地, 最值原语的选取以及表达式E 构造主要在待检测累积型缺陷相关的累积计算中, 主要根据累积计算中的状态累积方向确定最值函数.例如, 对于访问越界缺陷, 最值表达式通常是潜在或已经在错误报告中确定的引发访问越界的指针或整数索引. 不断变大的指针或索引用IJON_MAX 指派优化方向, 反之用IJON_MIN 指派优化方向. 递归过深导致的栈内存耗尽型缺陷则通过为递归函数加入递归层次变量来构造E. , 构造静态整数变量, 在进入函数时自增, 退出函数时自减. 使用IJON_MAX 指派其向层次更深的方向优化. 对于与循环或迭代次数有关的性能缺陷, 则引入多个计数变量进行衡量重复计算次数, 然后分别借助IJON_MAX 指派其向更大值优化.3.3 目标函数的输入驱动形式识别为了识别出目标函数依赖的输入驱动形式, 本文监控引发目标函数最值更新的有效变化的输入和频次. 每当目标函数最值更新时就通过文件比较识别出从之前的最值种子到新的最值种子的修改规则: (O, C1, C2). 其中O为修改位置, C1 为被替换的内容, C2 为替换后的内容. 通常C1 C2 的字节长度相同. 在实现时本文借助二进制分析工具radare2 提供的“radiff2 -O <file1> <file2>”命令来获取修改规则. 3 中的命令输出形式为“O C1=>C2O. radare2 所采用的比较方法主要是经典的Bindiff 算法[26] .设发现了n 个有效的变异字节位置, 每个位置触发最值变更的频次为H(i), 0<i<n;, 识别到的特征值类型分为递增累积型、固定累积型和未知3 种判定条件如下.(1) 固定累积型: 9i, 0<i<n , H(i)≥α.(2) 递增累积型: 8 i, 0<in, H(i)<α且|{i|H(i)<3, 0<i<n }|>β.(3) 未知: 其他.其中, α 是触发频次阈值, 用于判定高频有效变异字节, 并根据是否存在高频有效字节来确定当前特征值是否为固定累积型特征值, β 是有效变异位置数阈值, 其用于判定有效变异位置的分散程度. 当存在高频有效变异字节杨克 等: 面向递增累积型缺陷的灰盒模糊测试变异优化5时该特征值被判定为固定累积型特征值. 否则, 当频次低于3 的有效变异位置数分布足够多超过β 时, 该特征值被判定为固定累积型特征值. 其他情况下该特征值的类型被标记为未知.3 radiff2 的输出修改规则在该模型下, 本文在训练集上根据对固定累积型和递增累积型特征值的识别准确率和识别时间对α 和β 的取值进行调优, 得到α=5, β=8. 在测试缺陷集合上对该阈值组合进行验证后发现该组合能够在较短的时间内给出识别结果并保证准确率(详见第4 ).3.4 面向递增累积型缺陷的差分变异策略递增累积型缺陷的特征值依赖于有效输入数据规模的增长. 带来规模差异的数据内容往往是一些特殊取值的数据片段, 其内容的修改至多仅影响一次状态特征值最值更新, 因此有效的变异位置不具备复用性. 但是, 增量输入的数据内容为相同类型的数据, 因此可以复用. 本文利用了目标函数最值更新的相关种子变化特征, 对比带来目标函数最值更新的新种子与父亲种子的差异来获得有效的变异内容, 从而应用到其他后代的变异中.由于识别到的修改规则集合中可能包含与目标函数无关的冗余规则, 需要进一步进行清洗. 本文采用逐个恢复并验证目标函数值是否退化的方式来识别与目标函数相关的修改. 即以引发最值更新的种子为基础, 进行规则还原, 将固定偏移O 开始的C2 替换为C1. 如果修改后的种子所触发的目标函数值退化, 则说明该变异内容有效.为了对变异内容进行精简, 本文在算法变异规则有效性判定的基础上进行了规则约简, 如算法1 所示.算法1. 规则清洗算法.输入: 规则r=(O, C1, C2), 新种子s, 全局最大特征值gmax;1. t=recover(s, r)2. if gmax==get_cur_max(t) then3. return NULL;4. else5. r=r6. while len(r.c2)>1 do7. r1, r2 =split (r', 2);8. t1=apply(t, r1);9. t2=apply(t, r2);10. if get_cur_max(t1)== gmax then11. r'=r1;12. else if get_cur_max(t2)== gmax then13. r'=r2;14. else15. r'=r; break;6 软件学报16. end if17. end while18. return r;19. end if输出: 约简后的规则r'NULL.在具体实现时, 最小化问题也可以通过取负值转化为最大化问题, 因此算法1 中统一以最大值变化来判定变异有效性. 算法1 接受输入规则r=(o, c1, c2), 产生该规则的新种子s 以及当前目标函数的最大值gmax 作为输入.在规则无效时输出NULL, 否则输出精简后的规则r. 该算法首先根据对规则r s 上进行还原构造临时种子t(1 ), 然后运行构造的种子t 并获得该种子触发的特征值(2 ), 如果特征值不变, 说明该规则无效返回NULL,否则, 特征值变小了, 说明该规则有效. 将该规则二分, 并在t 的基础上验证每一部分自身是否足够引发特征值边为最大值. 如果是, 则规则r 可以进一步缩小, 当规则已经缩小至单字节内容的改动时停止约简, 最后返回约简后的规则r'. 7 行函数r1, r2 =split (r', 2); 将规则r'平均分割成两部分r1, r2, r1, r2 各负责一半内容的修改; 8 行函数t1=apply(t, r1) 是将种子t 应用规则r1. 为了实现对有效变异内容的复用, 当待检测特征值被判定为递增累积型时, 将识别到的有效变异规则中的修改内容C2 加入到AFL 的字典中, 并在检测到目标函数依赖于输入规模递增时以2/3 的概率使用字典相关的变异算子. 即随机替换和随机插入字典值两个变异操作, AFL Havoc 阶段的15 16 号变异算子.由于AFL 

[返回]
上一篇:基于RGB-D图像的语义场景补全研究综述
下一篇:开源SCI期刊版面费支付及报销流程