0

我需要一个工具来查找 C 项目中可能的缓冲区溢出。它不仅应该寻找易受攻击的函数strcpy(),还应该尽量减少误报的数量。例如,strcpy(buffer,"")不应将类似调用识别为缓冲区溢出,并且还应识别出良好的内存分配。

您知道满足这些要求的工具吗?

我刚刚找到了用于单个文件(不是完整项目)的工具,或者它们显示出许多误报。

4

4 回答 4

2

clang 静态分析器对边界问题进行了许多测试。您可以在整个项目中使用它,将其称为:

scan-build make

其中“make”是构建项目的命令。这是相当保守的,所以你不应该得到很多误报。

于 2012-08-16T11:50:01.100 回答
2

我发现 Gimpel 的 FlexeLint (Unix) == PC-Lint (Windows) 是用于此类检查的有价值的工具。他们有一个在线演示检查器,您可以在其中输入您的示例并查看它生成的警告。这应该让您了解它的功能。

于 2012-08-16T11:51:41.473 回答
1

看看KLEE,一个符号虚拟机。它使用符号执行来确定每个可能的执行路径上的所有可能的变量值。

于 2012-08-16T11:50:25.033 回答
0

尝试IBM Rational Purify;它是静态代码分析器,有关更多详细信息,请参阅wiki

于 2012-08-16T12:27:01.597 回答