我需要一个工具来查找 C 项目中可能的缓冲区溢出。它不仅应该寻找易受攻击的函数strcpy()
,还应该尽量减少误报的数量。例如,strcpy(buffer,"")
不应将类似调用识别为缓冲区溢出,并且还应识别出良好的内存分配。
您知道满足这些要求的工具吗?
我刚刚找到了用于单个文件(不是完整项目)的工具,或者它们显示出许多误报。
我需要一个工具来查找 C 项目中可能的缓冲区溢出。它不仅应该寻找易受攻击的函数strcpy()
,还应该尽量减少误报的数量。例如,strcpy(buffer,"")
不应将类似调用识别为缓冲区溢出,并且还应识别出良好的内存分配。
您知道满足这些要求的工具吗?
我刚刚找到了用于单个文件(不是完整项目)的工具,或者它们显示出许多误报。
我发现 Gimpel 的 FlexeLint (Unix) == PC-Lint (Windows) 是用于此类检查的有价值的工具。他们有一个在线演示检查器,您可以在其中输入您的示例并查看它生成的警告。这应该让您了解它的功能。
看看KLEE,一个符号虚拟机。它使用符号执行来确定每个可能的执行路径上的所有可能的变量值。
尝试IBM Rational Purify;它是静态代码分析器,有关更多详细信息,请参阅wiki。