我需要一个工具来查找C项目中可能的缓冲区溢出。它不仅应该查找像strcpy()
这样的易受攻击的函数,还应该最大限度地减少误报的数量。例如,strcpy(buffer,"")
之类的调用不应该被识别为缓冲区溢出,并且应该识别出良好的内存分配。
您是否知道满足这些要求的工具?
我刚刚找到了单个文件的工具(不是一个完整的项目),或者他们发现了许多误报。
答案 0 :(得分:2)
clang static analyser对边界问题进行了很多测试。您可以在整个项目中使用它,方法是:
scan-build make
其中“make”是构建项目的命令。这是相当保守的,所以你不应该得到很多误报。
答案 1 :(得分:2)
我发现Gimpel的FlexeLint(Unix)== PC-Lint(Windows)是进行此类检查的有用工具。他们有一个online demo checker,您可以在其中输入示例并查看它生成的警告。这应该可以让你了解它的功能。
答案 2 :(得分:1)
看看KLEE, a symbolic virtual machine。它使用符号执行来确定每个可能的执行路径上的所有可能的变量值。
答案 3 :(得分:0)
试试IBM Rational Purify;它是静态代码分析器,有关详细信息,请参阅wiki。