jwilk/detsan

GitHub: jwilk/detsan

detsan 利用 Clang 代码覆盖率插桩帮助开发者检测 C/C++ 程序中非确定性行为的来源。

Stars: 3 | Forks: 0

# 概述 **detsan** 利用 `clang 的代码覆盖率插桩 `_ 来帮助您找出 C(或 C++)程序中非确定性的来源。 .. code:: console $ cat -n target.c 1 #include 2 #include 3 4 int main(int argc, char **argv) 5 { 6 FILE *fp = fopen("/dev/urandom", "r"); 7 if (fp == NULL) 8 abort(); 9 unsigned int v; 10 size_t r = fread(&v, sizeof v, 1, fp); 11 if (r != 1) 12 abort(); 13 if (v & 1U) 14 puts("Looks like an odd number to me!"); 15 else 16 puts("An even number? How quaint!"); 17 fclose(fp); 18 return 0; 19 } $ clang -g -fsanitize-coverage=trace-pc-guard -fsanitize=address target.c -o target $ detsan ./target + /path/to/target.c:16:9 (main) - /path/to/target.c:14:9 (main) # 前置条件 * Python ≥ 3.6 * Clang ≥ 4.0 .. vim:ft=rst ts=3 sts=3 sw=3 et
标签:C/C++, Clang, 事务性I/O, 代码分析, 凭证管理, 确定性测试, 逆向工具