C++专业代码分析工具

3
我想询问可用的(免费或非免费)静态和动态代码分析工具,可用于C ++应用程序,尤其是COM和ActiveX。
我目前正在使用Visual Studio的/analyze编译器选项,这很好,但我仍然觉得有很多分析工作要做。
我说的是一个C ++应用程序,内存管理和代码安全至关重要。
我试图检查与安全相关的问题,例如内存管理,输入验证,缓冲区溢出,异常处理等。
我不感兴趣,比如继承深度或可执行代码行数。

如果您能详细说明需要检查的问题类型,那将会很有帮助。 - Timo Geusch
4个回答

2
毫无疑问,您想使用Axman。这是目前最好的ActiveX/Com安全测试工具,而且它是开源的。这是Month Of Browser Bugs中使用的主要工具之一,由Metasploit的创建者H.D. Moore开发。我个人使用Axman找到漏洞并编写利用代码
Axman使用TypeLib来识别组成COM的所有组件。这是一种类型反射,意味着不需要源代码。Axman使用反射自动生成针对COM的模糊测试用例。

谢谢。我在《Hacking Exposed Web 2.0》中了解了Axman,但知道它是模糊测试ActiveX/COM对象的最佳工具还是很好的。 - Orca

1

有一种安全工具类别称为模糊测试器(fuzzers),它们在最近的2010年温哥华Pwn2Own比赛中被使用。获胜者表示,他不会告诉软件制造商他发现了哪个漏洞,而是会告诉他们如何创建一个好的模糊测试器,以便让他们找到这些漏洞。这篇文章被Computerworld报道过

基本上,它会找到软件可以接受输入的每个位置,并尝试注入随机数据,直到应用程序崩溃。从那里开始,用户试图理解出错的原因并开发出有效的攻击方法。

我不知道任何特定的模糊测试器,但有许多种不同的测试器可用于各种用途(缓冲区溢出与SQL注入等两个非常不同的问题需要使用两种不同的测试器)。


1

我们使用非常复杂的静态分析工具Coverity Prevent,它将缺陷存储在具有 Web 接口的数据库中。支持 C、C++ 和 Java。

我们也使用像 Valgrind 这样的开源工具。


Coverity并不是那么好,而且它的价格真的很贵。 - rook
比我的房子还贵。 - C.J.

0

从这里开始,按照你的方式http://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis进行工作。

当我说“谷歌一下”时,我的意思并不是要无礼。就个人而言(可能因人而异),我通过谷歌搜索学到的东西比仅仅让别人给我“答案”要多得多。

此外,当我寻找工具时,我会去SourceForge上查找 - 在这种情况下 - "静态代码分析"

顺便说一句,看看Valgrind。


1
谢谢,没关系,我在提问之前已经通过谷歌和Valgrind进行了检查。尽管如此,一个人永远不能太确定,同行的经验是无价的! - Orca
+1 非常感谢您的包容;-) 顺便问一下,您能否自动化检查?例如在提交到 SVN 或夜间构建(如 Huson)时进行检查。您可能需要编写一个脚本来解析结果,并在出现问题时发送电子邮件?您是否需要将某些静态代码分析工具的输出作为代码审查的输入? - Mawg says reinstate Monica

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接