我想问一下可用于(可用或不用)静态和动态代码分析工具,这些工具可用于C ++应用程序,特别是COM和ActiveX。
我目前正在使用Visual Studio的/ analyze编译器选项,这很好,但我仍然觉得有很多分析要做。
我所说的是一个C ++应用程序,其中内存管理和代码安全性至关重要。
我正在尝试检查与安全性相关的问题,例如内存管理,输入验证,缓冲区溢出,异常处理......等等。
我对继承深度或可执行代码行感兴趣。
答案 0 :(得分:2)
毫无疑问,您想使用Axman。这是迄今为止最好的ActiveX / Com安全测试工具及其开源。这是H.D. Month Of Browser Bugs中使用的主要工具之一。摩尔,也是Metasploit的创造者。我亲自使用Axman查找漏洞并编写exploit code。
Axman使用TypeLib来识别构成COM的所有组件。这是类型relfection,这意味着不需要源代码。 Axman使用反射自动生成针对COM的模糊测试用例。
答案 1 :(得分:1)
最近在温哥华举行的Pwn2Own 2010比赛中使用了一个名为fuzzers的安全工具类别。获胜的人说,他不会告诉软件制造商他发现了哪些错误,而是如何创建一个好的模糊器,让他们找到错误。 This was covered by computerworld
基本上,它会找到软件可以输入的每个地方,并尝试注入随机数据,直到应用程序崩溃。从那里开始,用户试图了解出了什么问题并开展了有效的攻击。</ p>
我不知道任何特定的模糊器,但它们有多种用于各种用途(缓冲区溢出vs sql注入,2个非常不同的问题,2个不同的模糊器)
答案 2 :(得分:1)
我们使用Coverity Prevent这是一个非常复杂的静态分析工具,可以在具有Web界面的数据库中存储缺陷。它适用于C,C ++和Java。
我们也使用像Valgrind这样的开源工具。
答案 3 :(得分:0)
从这里开始按照http://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis
的方式工作当我说“google it”时,我并不是故意粗鲁。就个人而言(ymmv)我从谷歌搜索的过程中学到了更多,而不仅仅是让某人给我“答案”。
此外,当我寻找工具时,我将前往SourceForge寻找 - 在这种情况下 - "static code analysis"
顺便问一下,看看Valgrind