1、flawfinder
比较早期的安全检查工具。
如果是在Windows上运行,使用python跑脚本是比较方便的方法:
D:flawfinder-2.0.8>python flawfinder -h
--listrules 参数可以看所有的规则。
安装包里带了几个用于演示的文件,比如test.c
D:flawfinder-2.0.8>python flawfinder test.c
基本上就是正则匹配了,只是把危险函数找了出来,回溯之类的功能不要想了。。。
2、splint
和flawfinder一样是历史悠久的工具,但是要更先进一些。
实现原理参考:Statically Detecting Likely Buffer Overflow Vulnerabilities http://lclint.cs.virginia.edu/usenix01.html
2、coverity
商业软件,公司买了。
要求代码能够成功编译(不需要链接)。
就目前我试用的感觉,单个函数内的问题还是能发现一些,跨越函数的问题貌似处理的不是很好。
误报率有点高,没有广告中说的那么好。漏报率还不知道~
to be done
3、lgtm
https://lgtm.com/
to be done