
Pishi is a code coverage tool like kcov for macOS.
Pishi est un outil de réécriture binaire statique conçu pour instrumenter blocs de base dans le noyau XNU et dans des extensions de noyau macOS arbitraires (kexts).
pour le noyau XNU, Pishi vous permet d'instrumenter au niveau d'une fonction, d'un fichier ou d'un dossier. Par exemple, vous pouvez instrumenter tout ce qui se trouve dans le répertoire /bsd/net/ ou vous concentrer spécifiquement sur content_filter.c ou simplement sur une fonction spécifique du code source de XNU, par exemple vnode_getfromfd. Cela permet un fuzzing ciblé.
Après avoir construit et installé Pishi, vous pouvez utiliser ma version modifiée de libprotobuf-mutator qui nécessite d'appliquer mon patch( pour rendre libfuzzer compatible avec Pishi) puis de compiler LLVM pour obtenir un fuzzing de KEXT du noyau macOS sensible à la structure et au feedback avec libFuzzer.
Pour des discussions plus techniques, lisez MoreInfo. et pour commencer le fuzzing, lisez HowToFuzz
Comparé aux autres méthodes d'instrumentation du noyau XNU :
Une note sur la sécurité Évitez d'exécuter Pishi sur votre appareil personnel ; utilisez plutôt un appareil de recherche dédié que vous êtes prêt à risquer d'endommager.