工作笔记

2015-4-20

ctags的使用:ctags -R --fields=+iaS --extra=+q

使用gun cflow列举函数的调用关系,如:cflow pngtest.c -T,详细的可以参看cflow --help。

存在的疑问,在不存在调用关系的函数之间如何确定其出现的前后顺序?如果采用函数所需的参数来确定的话,存在一个问题,如libpng中,png_create_read_struct_2和png_create_read_struct都可以完成png_structp read_ptr的初始化,那么该如何选择呢?

2015-4-22

阅读论文《Industrial Application of Concolic Testing Approach:A Case Study on libexif by Using CREST-BV and KLEE》这也是对一个lib库进行检测,它使用了三种工具:CREST-BV 、KLEE、Coverity Prevent。在对测试对象的选择上,使用了lib库自带的test-mnote.c,在思路上也没什么新的东西,这片文章在最开始的时候就说是对exif中的maker note tags进行检测,这是很有针对性的,前期应该做了很多相应的工作。在检测结果的对比上,作者得出的结论是CREST-BV优于KLEE,主要表现test case的生成速度和覆盖率上。对test case的生成速度上的差别,文中给出了解释:klee在检测的时候,不仅检测了目标程序,而且还检测了目标程序调用的c库;另一个klee支持符号化的数组,对这些数组的操作会增加求解难度。文中提到test-mnote.c中使用的函数为206个函数,libexif中函数总数为238,调用比达到了86.5%,这个比例还是很高的。文中在对CREST-BV和Coverity Prevent的结果进行比较的时候,提到了Coverity Prevent报了一个bug,而CREST-BV没有报,因为test-mnote.c没有调用exif_loader_get_buf()这个函数。所以在使用lib库自带的程序对lib进行测试的时候,存在不充分。这个问题该如何解决呢?????

2015-4-23

阅读论文《Heuristics for Scalable Dynamic Test Generation》。这篇论文主要描述了三种路径选择算法,并对算法的性能进行了比较。

Bounded Depth-First Search算法,根据程序的cfg,从最开始的地方往下走,遇到第一个分支(如:l1和l2为一对if的两条路径,如果最开始选择了l1,在现在就强迫选择l2)进行反向选择,得到下一条路径。

Control-Flow Directed Search算法。先要确定一条未被执行到的指令(如l1),然后从l1延着cfg回溯,没经过一个有两条路径的节点时,设置该节点的权值,从1开始,每次增加1.后面根据权值的大小作为路径选择的依据(小优先)。

Uniform Random Search算法,和Bounded Depth-First Search算法有些相似,只不过不是每次遇到分支节点都会强迫反向选择,而是采用50%的概率决定是否反向,所以在理论上,如果全反向,则变成了Bounded Depth-First Search算法。

Random Branch Search算法,这个算法像Bounded Depth-First Search和Control-Flow Directed Search的一种折中,它不是从前到后或者从后到前,而是随即选择一对有分支的节点,进行反向选择。

通过实验结果的比较,Control-Flow Directed Search算法表现最优。

2015-4-24

阅读论文《Targeted Automatic Integer Overflow Discovery Using Goal-Directed Conditional Branch Enforcement》。该论文介绍了一种整型溢出检测工具,其基本原理是:1、找出程序中所有的malloc,通过污点分析,确定malloc的size是否能够被污染;2、抽取约束条件,通过符号执行,确定到达目标的约束,该约束分为状态约束和路径约束两种;3、使用Z3进行约束求解,生成可触发溢出的输入;4、目标直接路径约束,如果前面不能生成正确的输入,则进行这一步。通过对比种子输入和生成的输入在路径上的区别,将这些区别上的条件加入到约束求解中,再次进行求解,以此类推。导致需要进行目标路径约束,很有可能是因为对输入参数有relevant sanity checks和blocking checks。本文还提到了一种自动打补丁的工具CodePhage,这个是需要源码支持的,是通过分析补丁前的程序和donor application在执行路径上的区别,确定补丁的位置,然后进行修补的(方法不太确定)。后面以Dillo浏览器进行了举例,该浏览器使用了libpng,这个例子是对libpng中数据的检测流程进行了说明,最后,Dillo的漏洞是因为自己代码中错误使用了检测条件导致的,和libpng没什么关系,libpng的数据整型溢出检测是很完备的。第三章Goal-Directed Conditional Branch Enforcement Algorithm,未完待续。。。。。。

weixin063传染病防控宣传微信小程序系统的设计与实现+springboot后端毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值