Поскольку многие важные уязвимые места в защите невозможно обнаружить с помощью статического анализа, часто весьма полезным оказывается использование динамической отладки. Перечисленный ниже инструментарий генерирует необычные, но весьма важные тестовые случаи и оснащает программы средствами, позволяющими получить более детальный отчет об их деятельности.
Sharefuzz. Fuzz (дословно «шпик») — термин, обозначающий проверку граничных условий программы за счет передачи входных значений, которые с большой вероятностью приведут к сбою (например, вызовут переполнение буфера и тем самым позволят обнаружить уязвимые места в строках формата printf). Идея заключается в том, чтобы передать входные значения, состоящие из необычно длинных строк или строк, содержащих %n, а затем проанализировать дамп ядра для этой программы.
Sharefuzz автоматически выявляет переполнение в переменных среды в Unix-системах; может гарантировать, что все необходимые заплатки были установлены, и используются как средство обратного инжиниринга.
ElectricFence. Отладчик операторов malloc() для Linux и Unix; останавливает работу программы именно на той команде, которая использует неполностью или приводит к выходу за границы буфера, зарезервированного с помощью malloc().
MemWatch. Инструментарий для выявления утечек памяти. Утечки происходят в тех случаях, когда программа с помощью malloc() резервирует некоторые данные, но никогда их не освобождает. Несогласующиеся операции malloc() и free() (когда одна и та же память несколько раз освобождается, память используется после того, как она освобождена, и так далее) могут привести к ошибкам с теми же последствиями, что и переполнение буфера.