
Pishi is a code coverage tool like kcov for macOS.
Pishi は、XNU カーネルおよび任意の macOS カーネルエクステンション(kext)内の basic blocks を計装するために設計された静的バイナリ書き換えツールです。
XNU カーネルに関しては、Pishi を使用すると、関数、ファイル、またはフォルダーレベルで計装できます。たとえば、/bsd/net/ ディレクトリ内のすべてを計装したり、content_filter.c に焦点を当てたり、XNU ソースコード内の vnode_getfromfd のような特定の関数だけを計装することもできます。これにより、対象を絞ったファジングが可能になります。
Pishi をビルドしてインストールした後は、libprotobuf-mutator の私の修正版 を使用できます。これには 私のパッチ(libfuzzer を Pishi 対応にするため)を適用し、その後 LLVM をビルドして、libFuzzer による構造認識型・フィードバック認識型の macOS カーネル KEXT ファジングを実現する必要があります。
技術的な詳細については MoreInfo をお読みください。また、ファジングを開始するには HowToFuzz をお読みください。
他の XNU カーネル計装方法との比較:
セキュリティと安全性に関する注意 個人のデバイスで Pishi を実行しないでください。代わりに、損傷するリスクを許容できる専用の研究用デバイスを使用してください。