
Pishi — это инструмент для измерения покрытия кода, аналогичный kcov, для macOS.
Pishi — это инструмент статической перезаписи бинарного кода, предназначенный для инструментирования basic blocks в ядре XNU и в произвольных расширениях ядра macOS (kexts).
Для ядра XNU Pishi позволяет инструментировать на уровне функции, файла или папки. Например, можно инструментировать всё в каталоге /bsd/net/ или сосредоточиться конкретно на content_filter.c или на одной конкретной функции в исходном коде XNU, например vnode_getfromfd. Это обеспечивает целевой фаззинг.
После сборки и установки Pishi вы можете использовать мою модифицированную версию libprotobuf-mutator, для которой требуется применить мой патч( чтобы сделать libfuzzer Pishi-aware), а затем собрать LLVM для структурно-ориентированного и учитывающего обратную связь фаззинга KEXT ядра macOS с помощью libFuzzer.
Для более технических обсуждений читайте MoreInfo. А чтобы начать фаззинг, читайте HowToFuzz
По сравнению с другими методами инструментирования ядра XNU:
Примечание по безопасности Не запускайте Pishi на вашем личном устройстве; вместо этого используйте выделенное исследовательское устройство, повреждением которого вы готовы рискнуть.