Miller首先通过修剪具有相似代码覆盖率的样本来将其PDF样本的语料减少到最少。也就是说,他如何确定相似的代码覆盖率?
我可以想象一个跟踪执行并记录JMP / CALL以获得执行图的工具,我想您可以对这些图进行比较。但是JIT代码呢?由于JIT可能位于内存中的不同位置,所以这些图是否会非常不同?
#1 楼
不确定使用JIT编译代码对应用程序有何影响,但是peach具有minset实用程序,可以创建具有最高代码覆盖率的最小文件集:目标程序并确定代码覆盖率。然后,它将找到覆盖最多代码所需的最少文件数量。这将是模糊测试时应使用的最少文件集。但据我所知,它使用了您建议的方法,监视应用程序所有基本块的命中。它使用pintool来做到这一点。
#2 楼
尽管与GCC紧密结合,但gcov
项目还是作为Linux代码覆盖工具而流行的。但是,它需要使用-fprofile-arcs -ftest-coverage
标志来编译程序,如果以封闭源代码软件为目标,则这可能不是一个选择。可以在这里找到更多信息:http://gcc.gnu.org/onlinedocs/gcc/Gcov.html
评论
这是一个很好的建议,但我希望能提供有关闭源软件的建议。
–mrduclaw
13年3月30日在20:54