最近项目到了收尾期,美国专家要求我们的代码必须进行静态检查,以避免代码存在缓冲区溢出漏洞和其他的弱点,从而成为溢出攻击的目标或者攻击操作系统的跳板。我们的代码是c++的,开始我用开源的cppcheck进行了代码扫描,确实能够帮助找出潜在的程序错误,但是这还不够,cppcheck毕竟是开源的软件,所以专家们建议我们使用fortify进行全面的静态检查,并且防备最终的可执行文件被逆向分析。
cppcheck很容易使用,而且有独立的界面,只需要给出源代码的路径就可以进行静态检查了。
fortify的windows版本是作为插件集成到visual studio中,这里有一点区别,cppcheck的静态检查是对源码的静态分析,而fortify需要visual studio的编译结果,所以fortify是对源码文件和编译生成的obj文件综合进行分析,所以更加贴近于可执行代码。
fortify有非常丰富的规则库,可以找出更多潜在的程序错误。并且有比较详尽的说明提示代码的问题所在。
另外还有一款商业的代码静态检查工具pvsstudio也是作为插件集成到visual studio的开发环境中。
其他还有一些支持c++代码静态检查的软件或者功能不够强大或者安装配置使用不够方便,所以没有深入了。