Профессиональные инструменты анализа кода C ++ - PullRequest
3 голосов
/ 28 марта 2010

Я хотел бы спросить о доступных (бесплатных или нет) инструментах статического и динамического анализа кода, которые можно использовать для приложений C ++ ОСОБЕННО COM и ActiveX.

В настоящее время я использую опцию компилятора / анализа Visual Studio, и это хорошо, и все, но я все еще чувствую, что предстоит еще много анализа.

Я говорю о приложении C ++, в котором управление памятью и безопасность кода имеют первостепенное значение.

Я пытаюсь проверить наличие проблем, связанных с безопасностью, таких как управление памятью, проверка ввода, переполнение буфера, обработка исключений ... и т. Д.

Меня не интересует, скажем, глубина наследования или строки исполняемого кода.

Ответы [ 4 ]

2 голосов
/ 28 марта 2010

Без сомнения, вы хотите использовать Axman . На сегодняшний день это лучший инструмент для тестирования безопасности ActiveX / Com с открытым исходным кодом. Это был один из ведущих инструментов, использованных в Месяце ошибок браузера от H.D. Мур, который также является создателем Metasploit . Я лично использовал Аксмана, чтобы найти уязвимости и написать код эксплойта .

Axman использует TypeLib для идентификации всех компонентов, составляющих COM. Это тип relfection , и это означает, что Исходный код не требуется. Axman использует отражение, чтобы автоматически генерировать нечеткие тестовые примеры для COM.

1 голос
/ 30 марта 2010

Мы используем Coverity Prevent , который является очень сложным инструментом статического анализа, который хранит дефекты в базе данных, имеющей веб-интерфейс. Это работает для C, C ++ и Java.

Мы также используем инструменты с открытым исходным кодом, такие как Valgrind.

1 голос
/ 28 марта 2010

Существует категория средств защиты, называемая фаззерами, которые использовались в недавнем конкурсе Pwn2Own 2010 в Ванкувере. Победивший парень сказал, что он не собирается сообщать производителям программного обеспечения, какую ошибку он обнаружил, а вместо этого, как создать хороший фаззер, который позволит им находить ошибки. Это было покрыто computerworld .

По сути, он находит все места, в которые программа может вводить данные, и пытается ввести случайные данные до тех пор, пока приложение не выйдет из строя. Исходя из этого, пользователь пытается понять, что пошло не так, и разрабатывает эффективную атаку.

Я не знаю каких-либо конкретных fuzzers, но есть много видов их для различного использования (переполнение буфера против инъекций sql, 2 очень разные проблемы, 2 разных fuzzers)

0 голосов
/ 28 марта 2010

Начни здесь, работай так, как ты http://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis

Я не хочу быть грубым, когда говорю "погугли это". Лично (ymmv) я узнаю гораздо больше по пути от поиска в Google, чем просто от того, что кто-то дает мне «ответ».

Кроме того, когда я ищу инструменты, я иду в SourceForge и ищу - в данном случае - «статический анализ кода»

Кстати, посмотрите Вальгринд

...