Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
BugChecker — Débogueur noyau de type SoftICE pour Windows 11 | Kitploit
Outils/GitHubGitHub/vitoplantamura/bugchecker
Analyse Dynamique (Sandboxing)Rétro-ingénierieDébogueursAnalyse de Binaires
GitHubvitoplantamura/bugchecker

BugChecker

Débogueur noyau de type SoftICE pour Windows 11

Voir le dépôt
1.1k14418il y a 3 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

BugChecker

Introduction

BugChecker est un débogueur noyau et utilisateur de type SoftICE pour Windows 11 (et Windows XP également : il prend en charge les versions de Windows de XP à 11, en x86 et x64). BugChecker ne nécessite pas qu'une deuxième machine soit connectée au système en cours de débogage, contrairement à WinDbg et KD. Cette version de BugChecker (contrairement à la version originale développée il y a 20 ans) exploite l'API KD interne et non documentée de NTOSKRNL. L'API KD permet à WinDbg/KD d'effectuer des appels comme la lecture/écriture de la mémoire virtuelle, la lecture/écriture des registres, le placement d'un point d'arrêt à une adresse, etc.

En revanche, l'original BugChecker, tout comme SoftICE, avait l'habitude de « prendre le contrôle » du système, en hookant plusieurs API du noyau (à la fois exportées et privées), en prenant le contrôle de l'APIC, en envoyant des IPI, etc. Cette approche augmente la complexité de manière exponentielle (et réduit la stabilité du système), car l'implémentation doit être compatible avec toutes les versions et sous-versions de Windows prises en charge (au niveau de la signature des fonctions) ainsi qu'avec toutes les configurations matérielles prises en charge. De plus, 20 ans plus tard, PatchGuard rend cette solution impossible.

En revanche, cette version de BugChecker, en interceptant les appels à KdSendPacket et KdReceivePacket dans le noyau, se présente à la machine en cours de débogage comme un deuxième système exécutant un débogueur noyau externe, mais, en réalité, tout se passe sur la même machine. Typiquement, cela est réalisé en remplaçant KDCOM.DLL (qui est le module qui implémente la communication série pour l'API KD dans Windows) et en démarrant le système en mode débogage noyau. Cette approche (inspirée de VirtualKD) réduit la complexité et augmente la stabilité, la compatibilité (et la portabilité, par exemple vers ARM - et la modularité, car les capacités de débogage de bas niveau sont implémentées derrière KdXxxPacket et pourraient être remplacées par une implémentation personnalisée). De plus, la présence d'un débogueur noyau au démarrage (bien que « factice ») désactive PatchGuard.

Pour le moment, BugChecker nécessite un clavier PS/2 pour la saisie et un framebuffer linéaire pour écrire sa sortie. Veuillez noter que le clavier intégré de nombreux ordinateurs portables modernes est encore PS/2.

Fonctionnalités

  • Prise en charge de Windows XP à Windows 11, x86 et x64, et des noyaux SMP. Prise en charge des processus WOW64 sur x64.
  • Intégration de QuickJSPP, qui est un portage de QuickJS vers MSVC++. Avant d'appeler QuickJS, BugChecker sauvegarde l'état FPU (sur x86) et bascule vers une pile étendue de 128 Ko.
  • Les commandes acceptent des expressions JS. Par exemple, « U rip+rax*4 » et « U MyJsFn(rax+2) » sont des commandes valides. Des fonctions personnalisées peuvent être définies dans la fenêtre de script. Les registres du CPU sont automatiquement déclarés comme variables de portée globale par BugChecker.
  • Prise en charge des fichiers de symboles PDB. Les fichiers PDB peuvent être spécifiés manuellement ou le chargeur de symboles peut les télécharger depuis un serveur de symboles.
  • Le code JavaScript peut appeler les fonctions asynchrones suivantes : WriteReg, ReadMem, WriteMem.
  • Les points d'arrêt peuvent avoir une condition JS : si la condition est évaluée à 0, aucun « breakin » ne se produit. Cela permet de définir des « Logpoints » et des points d'arrêt qui peuvent modifier le flux d'exécution.
  • La fenêtre de journal affiche les messages envoyés au débogueur noyau (par exemple les messages DbgPrint).
  • Fenêtre JavaScript avec coloration syntaxique.
  • La touche Tab permet, étant donné quelques chiffres, de parcourir tous les nombres hexadécimaux à l'écran ou, étant donné quelques caractères, de parcourir tous les symboles contenant ces caractères.
  • EASTL et les coroutines C++20 facilitent la création de nouvelles commandes. N'hésitez pas à envoyer vos pull requests !

Vidéos (YouTube)

Démonstration de BugChecker sur Windows 11 22H2, dans VirtualBox 7.0.4. Une condition de point d'arrêt JavaScript est écrite, modifiant le flux d'exécution dans un thread en mode utilisateur.

Regarder la vidéo

BugChecker fonctionnant dans un environnement très contraint : un Raspberry Pi 4 (4 Go de RAM), via QEMU sur Windows XP (512 Mo de RAM). Un point d'arrêt est utilisé pour journaliser tous les appels SYSENTER du mode utilisateur vers le noyau. L'index de service est stocké dans un tableau JavaScript.

Regarder la vidéo

Exécution de BugChecker directement sur du matériel nu, sur un HP Pavilion Dv2000, un ancien PC avec un clavier PS/2. Le système d'exploitation est Windows 7 Home 32 bits.

Regarder la vidéo

Instructions d'installation

Introduction

Assurez-vous que Secure Boot est désactivé lors de l'installation et de l'utilisation de BugChecker. Vous pouvez généralement le réactiver ultérieurement. Si vous utilisez VMware ou VirtualBox, Secure Boot peut être désactivé dans les paramètres de la machine virtuelle.

Envisagez également d'activer le menu de démarrage hérité, si vous utilisez Windows 8, 10 ou 11, en utilisant la commande : bcdedit /set "{current}" bootmenupolicy legacy. Cela permet une expérience plus fluide lors du démarrage, en permettant de sélectionner l'option de démarrage BugChecker et de désactiver l'application de la signature des pilotes en même temps.

Instructions

La première étape consiste à démarrer le chargeur de symboles :

Chargeur de symboles

Si nécessaire, désactivez les pilotes d'affichage en cliquant sur le bouton « Disable Display Drvs ». La même opération peut être effectuée dans le Gestionnaire de périphériques Windows. Une fois les pilotes d'affichage désactivés, ils restent désactivés même après un redémarrage du système. Ils peuvent être réactivés à tout moment ultérieurement lorsque vous n'utilisez pas BugChecker.

Le point ici est que BugChecker a besoin d'un framebuffer linéaire avec un format de 32 bits par pixel pour dessiner son interface. Lors de la désactivation des pilotes d'affichage, Windows abandonne l'accélération matérielle pour dessiner son interface utilisateur et revient au mode de compatibilité VGA. Si vous exécutez sur du matériel nu ou VMware, vous devez désactiver les pilotes d'affichage. Si vous exécutez sur VirtualBox, vous devez désactiver les pilotes d'affichage ou définir le paramètre vm_screen dans BugChecker.dat, comme décrit ci-dessous. Si vous exécutez sur QEMU, vous n'avez pas besoin de désactiver les pilotes d'affichage mais assurez-vous de spécifier le périphérique d'affichage « -vga std ».

Télécharger l’outil