Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
BugChecker — SoftICE-like kernel debugger per Windows 11 | Kitploit
Strumenti/GitHubGitHub/vitoplantamura/bugchecker
Analisi Dinamica (Sandboxing)Reverse EngineeringDebuggerAnalisi di Binari
GitHubvitoplantamura/bugchecker

BugChecker

SoftICE-like kernel debugger per Windows 11

Vedi Repository
1.1k144173 anni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

BugChecker

Introduzione

BugChecker è un debugger kernel e user simile a SoftICE per Windows 11 (e anche Windows XP: supporta versioni di Windows da XP a 11, sia x86 che x64). BugChecker non richiede una seconda macchina collegata al sistema in fase di debug, come nel caso di WinDbg e KD. Questa versione di BugChecker (a differenza della versione originale sviluppata 20 anni fa) sfrutta l'API KD interna e non documentata in NTOSKRNL. L'API KD consente a WinDbg/KD di effettuare chiamate come lettura/scrittura della memoria virtuale, lettura/scrittura dei registri, posizionamento di un breakpoint a un indirizzo, ecc.

Al contrario, il BugChecker originale, come SoftICE, era solito "prendere il controllo" del sistema, hookando diverse API del kernel (sia esportate che private), prendendo il controllo dell'APIC, inviando IPI, ecc. Questo approccio aumenta esponenzialmente la complessità (e riduce la stabilità del sistema), poiché l'implementazione deve essere compatibile con tutte le versioni e sottoversioni supportate di Windows (a livello di firma delle funzioni) nonché con tutte le possibili configurazioni hardware supportate. Inoltre, 20 anni dopo, PatchGuard rende questa soluzione impossibile.

Al contrario, questa versione di BugChecker, intercettando le chiamate a KdSendPacket e KdReceivePacket nel kernel, si presenta alla macchina in fase di debug come un secondo sistema che esegue un debugger kernel esterno, ma, in realtà, tutto avviene sulla stessa macchina. In genere ciò si ottiene sostituendo KDCOM.DLL (che è il modulo che implementa la comunicazione via cavo seriale per l'API KD in Windows) e avviando il sistema in modalità debug kernel. Questo approccio (ispirato da VirtualKD) riduce la complessità e aumenta la stabilità e la compatibilità (e la portabilità, ad esempio, su ARM - e la modularità, poiché le capacità di debug di basso livello sono implementate dietro KdXxxPacket e potrebbero essere sostituite con un'implementazione personalizzata). Inoltre, la presenza di un debugger kernel all'avvio (sebbene "falso") fa sì che Windows disabiliti PatchGuard.

Al momento, BugChecker richiede una tastiera PS/2 per l'input e un framebuffer lineare per scrivere il suo output. Si noti che la tastiera integrata di molti laptop moderni è ancora PS/2.

Caratteristiche

  • Supporto da Windows XP a Windows 11, x86 e x64, e kernel SMP. Supporto per processi WOW64 su x64.
  • Integrazione di QuickJSPP, che è un porting di QuickJS su MSVC++. Prima di chiamare QuickJS, BugChecker salva lo stato FPU (su x86) e passa a uno stack espanso di 128KB.
  • I comandi accettano espressioni JS. Ad esempio, "U rip+rax*4" e "U MyJsFn(rax+2)" sono comandi validi. Le funzioni personalizzate possono essere definite nella finestra Script. Le variabili dei registri CPU vengono dichiarate automaticamente come variabili di scope globale da BugChecker.
  • Supporto per file di simboli PDB. I file PDB possono essere specificati manualmente o Symbol Loader può scaricarli da un server di simboli.
  • Il codice JavaScript può chiamare le seguenti funzioni asincrone: WriteReg, ReadMem, WriteMem.
  • I breakpoint possono avere una condizione JS: se la condizione restituisce 0, non si verifica alcun "breakin". Ciò consente di impostare "Logpoint" e breakpoint che possono modificare il flusso di esecuzione.
  • La finestra Log mostra i messaggi inviati al debugger kernel (ad esempio i messaggi DbgPrint).
  • Finestra JavaScript con evidenziazione della sintassi.
  • Il tasto TAB consente, dati pochi numeri, di ciclare attraverso tutti i numeri esadecimali sullo schermo o, dati pochi caratteri, di ciclare attraverso tutti i simboli contenenti quei caratteri.
  • EASTL e le coroutine C++20 rendono la creazione di nuovi comandi un gioco da ragazzi. Sentitevi liberi di inviare le vostre pull request!

Video (Youtube)

Dimostrazione di BugChecker su Windows 11 22H2, all'interno di VirtualBox 7.0.4. Viene scritta una condizione di breakpoint JavaScript che cambia il flusso di esecuzione in un thread in modalità utente.

Guarda il video

BugChecker in esecuzione in un ambiente molto limitato: un Raspberry Pi 4 (4GB di RAM), via QEMU su Windows XP (512MB di RAM). Un breakpoint viene utilizzato per registrare tutte le chiamate SYSENTER dalla modalità utente al kernel. L'indice del servizio viene memorizzato in un array JavaScript.

Guarda il video

Esecuzione di BugChecker direttamente su hardware reale, su un HP Pavilion Dv2000, un vecchio PC con tastiera PS/2. Il sistema operativo è Windows 7 Home 32 bit.

Guarda il video

Istruzioni per l'installazione

Introduzione

Assicurarsi che Secure Boot sia disabilitato durante l'installazione e l'utilizzo di BugChecker. Di solito è possibile riattivarlo in seguito. Se si utilizza VMware o VirtualBox, Secure Boot può essere disabilitato nelle impostazioni della macchina virtuale.

Considerare anche l'abilitazione del menu di avvio legacy, se si utilizza Windows 8, 10 o 11, utilizzando il comando: bcdedit /set "{current}" bootmenupolicy legacy. Consente un'esperienza più fluida durante l'avvio, permettendo di selezionare l'opzione di avvio di BugChecker e allo stesso tempo di disabilitare l'Enforcement della Firma del Driver.

Istruzioni

Il primo passo è avviare Symbol Loader:

Symbol Loader

Se necessario, disabilitare i driver del display facendo clic sul pulsante "Disable Display Drvs". La stessa operazione può essere eseguita in Gestione dispositivi di Windows. Dopo aver disabilitato i driver del display, rimangono disabilitati anche dopo un riavvio del sistema. Possono essere riattivati in qualsiasi momento successivo quando non si utilizza BugChecker.

Il punto è che BugChecker necessita di un framebuffer lineare con un formato di 32 bit per pixel per disegnare la sua interfaccia. Quando si disabilitano i driver del display, Windows elimina l'accelerazione hardware per il disegno della sua UI e torna alla modalità di compatibilità VGA. Se si esegue su hardware reale o VMware, è necessario disabilitare i driver del display. Se si esegue su VirtualBox, è necessario disabilitare i driver del display o impostare l'impostazione vm_screen in BugChecker.dat, come descritto di seguito. Se si esegue su QEMU, non è necessario disabilitare i driver del display, ma assicurarsi di specificare il dispositivo di visualizzazione "-vga std".

Si noti che la modalità di compatibilità VGA potrebbe limitare la risoluzione massima dello schermo. VMware è limitato a una risoluzione massima di 1152x864. QEMU con il dispositivo di visualizzazione "-vga std" non soffre di questa limitazione.

Scarica lo strumento