Не совсем ответ на вопрос, который вы задаете, но ...
, потому что у меня нет исходного кода, чтобы изменить двоичный файл, чтобы он выходил (0) после анализа data,
Приведенная выше предпосылка: false .
Я решил написать обертку вокруг двоичного файла, чтобы можно было завершить его после проходит определенное время,
Такой подход, хотя и осуществимый, будет тратить много времени: вы не знаете, сколько времени занимает разбор, поэтому вам придется подождать некоторое максимальное время. Если вы не будете ждать достаточно долго, вы пропустите тестовое покрытие. И вам также не хватает охвата парсера, переходящего в бесконечное число l oop.
Так как же может сделать программу exit(0)
после анализа? Путем бинарного исправления. Вот пример .
. Вам нужно будет найти место в двоичном файле, в котором возвращается подпрограмма ParseInput()
(или как она там называется), и исправить несколько инструкций для выполнения эквивалент syscall(SYS_exit, 0)
.
Скорее всего, ваше фаззинг будет go намного быстрее (не тратя времени на ожидание, когда синтаксический анализ уже выполнен), и вы сможете определить, когда анализатор переходит в бесконечное l oop.