文章目录
cov可视化
在libfuzzer的官方教程上找到了关于cov可视化的教程。本文可视为一个官方英文文档的复现,中文化与探索。
官方文档地址:
libFuzzer Tutorial
遂尝试。
教程上一共用两段原文来概括了可视化的实现
Visualizing Coverage
We recommend Clang Coverage to visualize and study your code coverage. A simple example:
# Build your code for Clang Coverage; link it against a standalone driver for running fuzz targets. svn export http://github.com/llvm/llvm-project/trunk/compiler-rt/lib/fuzzer Fuzzer clang -fprofile-instr-generate -fcoverage-mapping ~/fuzzing/tutorial/libFuzzer/fuzz_me.cc \ ~/Fuzzer/standalone/StandaloneFuzzTargetMain.c mkdir CORPUS # Create an empty corpus dir. echo -n A > CORPUS/A && ./a.out CORPUS/* && \
llvm-profdata merge -sparse *.profraw -o default.profdata && \
llvm-cov show a.out -instr-profile=default.profdata -name=FuzzMe
fuzzme
我们来尝试执行一下。
首先创建一个目录cov
在目录下创建fuzzme.cc,内容如下:
#include <stddef.h>
#include <stdint.h>
bool FuzzMe(const uint8_t *Data, size_t DataSize) {
int *a = NULL;
if (Dat