Как насчет фаззинга двоичного файла путем преобразования его в исходный код?

#c #ida #fuzzing #american-fuzzy-lop

#c #ida #фаззинг #американский-нечеткий-lop

Вопрос:

Я изучаю, как использовать AFL для размытия двоичного файла. Я знаю, что для этого можно использовать режим qemu. Однако использование режима qemu действительно влияет на производительность фаззинга.

Таким образом, мне интересно, что, если я изменю целевой двоичный файл на код C с помощью IDA PRO, а затем скомпилирую код C с помощью afl-gcc? Будет ли эта идея работать? Или это приведет к искажению.

Комментарии:

1. Декомпиляция не всегда идеальна, поэтому у вас возникнут некоторые проблемы. См reverseengineering.stackexchange.com/questions/2603 /… и github.com/NationalSecurityAgency/ghidra/issues/236

2. Ваше предложение не сработает. Но ближайшим решением для ваших целей является afl-dyninst.

Ответ №1:

Фаззинг двоичного файла без исходного кода можно выполнить с помощью таких инструментов, как McSema. Он преобразует двоичный файл в битовый код LLVM и позволяет вам фаззировать его с помощью libFuzzer. Но, как уже сказал пользователь3804799, декомпиляция не идеальна.

Ответ №2:

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