Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
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
masm32-kernel-programming — masm32 kernel programming, drivers, tutorials, examples, and tools (credits Four-F) | Kitploit
Strumenti/GitHubGitHub/therealdreg/masm32-kernel-programming
Reverse EngineeringMalware AnalysisBinary AnalysisLearning & EducationCurated ResourcesLabs & Practice
GitHubtherealdreg/masm32-kernel-programming

masm32-kernel-programming

masm32 kernel programming, drivers, tutorials, examples, and tools (credits Four-F)

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
Vedi RepositorySito web
130183 anni faRevisionato da Kitploit

masm32-kernel-programming

Repo di Dreg per le sue esigenze personali

Programmazione kernel masm32, driver, tutorial, esempi e strumenti (crediti Four-F)

Istruzioni

  • scarica/clona questo repo
  • esegui masm32v11r_install.exe
  • fai clic sull'immagine di installazione (la terra)
  • installa masm32 in C:\
  • consiglio di aggiungere alle variabili d'ambiente PATH le seguenti voci:
    • C:\masm32\bin
    • C:\masm32
  • copia il contenuto di KmdKit18\include\ in C:\masm32\include\
  • copia il contenuto di KmdKit18\macros\ in C:\masm32\macros\
  • copia il contenuto di KmdKit18\lib\ in C:\masm32\lib\

Esempio base

  • copia beeper.asm in C:\
  • copia beeper.bat in C:\
  • esegui beeper.bat

A questo punto viene creato un file .sys in C:\

Come caricare/scaricare un driver

w2k_load.exe - il modo migliore

carica il driver:

  • w2k_load.exe C:\beeper.sys

w2k_load.exe o osrloader.exe mostra un errore durante il caricamento di beeper.sys, ignoralo e basta.

Questo errore viene generato dal codice del driver stesso quando termina la propria esecuzione (con questo trucco non è necessario scaricarlo)

root@kitploit:~
mov eax, STATUS_DEVICE_CONFIGURATION_ERROR
ret

Quindi, se beep.sys è caricato correttamente nel kernel, dovresti sentire un beep dagli altoparlanti (il codice del driver genera un beep)

Quando devi scaricare un driver usa:

  • w2k_load.exe PATH_SYS_FILE /unload

Ho modificato w2k_load.exe di Sven B. Schreiber per farlo funzionare da Windows 2000 a Windows 10 (manifest...)

osrloader

decomprimi osrloaderv30.zip e usa questo programma GUI:

  • Seleziona un file .sys (percorso del driver)
  • Registra il servizio
  • Avvia il servizio

Come visualizzare i messaggi di debug senza windbg

per versioni precedenti di Windows usa semplicemente DbgView.exe incluso in questo repo. Comunque, l'ho modificato (manifest...)

Per le versioni moderne di Windows usa l'ultima versione di dbgview.exe dal sito di sysinternals e controlla questo per la risoluzione dei problemi:

  • https://stackoverflow.com/questions/12494300/no-output-from-debugview
  • http://msdn.microsoft.com/en-us/library/windows/hardware/ff551519(v=vs.85).aspx
  • https://learn.microsoft.com/en-us/sysinternals/downloads/debugview

Prossimi passi

Leggi i file .pdf in questo repo e guarda gli esempi nella directory KmdKit18/examples

AVVERTENZA: TUTTO il codice sorgente ASM è all'interno di file .bat (codice batch + asm mescolati nello stesso file)

Esempio con advanced\FindShadowTable\FindShadowTable.bat

root@kitploit:~
;@echo off
;goto make

ASM DRIVER CODE GOES HERE

:make
set drv=FindShadowTable
\masm32\bin\ml /nologo /c /coff %drv%.bat
\masm32\bin\link /nologo /driver /base:0x10000 /align:32 /out:%drv%.sys /subsystem:native %drv%.obj
del %drv%.obj
echo.
pause

Questo file contiene codice BATCH che genera un .sys e contiene anche il codice sorgente del driver stesso. Quindi sì, è molto complesso: lo script di build e il codice sorgente sono insieme

advanced/FindShadowTable

advanced/FindShadowTable

Questo è un esempio di come trovare ServiceDescriptorTableShadow.

Scansiona semplicemente i thread con ID 80h-400h cercando di trovare un thread il cui KTHREAD.ServiceTable non sia uguale a KeServiceDescriptorTable. Se viene trovato un thread del genere, il suo KTHREAD.ServiceTable contiene l'indirizzo di ServiceDescriptorTableShadow.

Osserva l'output di debug del driver con DbgView (www.sysinternals.com) o usa SoftICE.

Testato su: Windows 2000, XP e Server 2003.

advanced/KbdSpy

advanced/KbdSpy

Questo è un esempio di un semplice driver filtro PS/2 legacy (non PnP) per tastiera. AVVERTENZA: non riuscirai ad associarlo allo stack della tastiera USB.

Testato su: Windows 2000, XP e Server 2003.

advanced/MouSpy

advanced/MouSpy

Four-F, [email protected] Questi file macro provengono dal mio pacchetto cocomac.

Questo è un esempio di un semplice driver filtro PS/2 legacy (non PnP) per mouse. AVVERTENZA: non riuscirai ad associarlo allo stack del mouse USB.

Testato su: Windows 2000, XP e Server 2003.

advanced/SecureDevices

advanced/SecureDevices

Questo è un esempio di come applicare specifiche impostazioni di sicurezza a un oggetto device con nome chiamando IoCreateDeviceSecure invece di IoCreateDevice.

Poiché la routine IoCreateDeviceSecure non fa parte del sistema operativo, colleghiamo wdmsec.lib, che contiene tutte le routine necessarie.

La libreria wdmsec.lib che troverai qui non è quella fornita con il DDK. Ho dovuto ricompilarla per ridurne le dimensioni, rimuovendo i membri non necessari.

basic/FileWorks

basic/FileWorks

Questo è un esempio di come creare, scrivere, leggere ed eliminare un file.

Usa KmdManager per registrarlo/annullarne la registrazione e avviarlo. Osserva il suo output di debug con DbgView (www.sysinternals.com) o usa SoftICE.

Testato su: Windows 2000, XP e Server 2003.

basic/HiddenDriver

basic/HiddenDriver

Questo è un esempio di come impacchettare il driver nelle risorse.

Testato su: Windows 2000, XP e Server 2003.

basic/IsSafeBootMode

basic/IsSafeBootMode

Il modo per sapere se il sistema è in esecuzione in modalità provvisoria o meno.

Usa KmdManager per registrarlo/annullarne la registrazione e avviarlo. Osserva il suo output di debug con DbgView (www.sysinternals.com) o usa SoftICE.

Testato su: Windows 2000, XP e Server 2003.

basic/MemoryWorks/LookasideList

basic/MemoryWorks/LookasideList

Questo è un esempio di come usare la lookaside list e la lista doppiamente collegata per gestire i blocchi di memoria allocati dalla lookaside list.

Usa KmdManager per registrarlo/annullarne la registrazione e avviarlo/fermarlo. Osserva il suo output di debug con DbgView (www.sysinternals.com) o usa SoftICE.

Testato su: Windows 2000, XP e Server 2003.

basic/MemoryWorks/seh

basic/MemoryWorks/seh

Questo è un esempio di come gestire le eccezioni con SEH. Ma ricorda: NON PUOI GESTIRE TUTTE LE ECCEZIONI CON SEH IN MODALITÀ KERNEL!

Usa KmdManager per registrarlo/annullarne la registrazione e avviarlo/fermarlo. Osserva il suo output di debug con DbgView (www.sysinternals.com) o usa SoftICE.

Testato su: Windows 2000, XP e Server 2003.

basic/MemoryWorks/SharedSection

basic/MemoryWorks/SharedSection

Questo è un esempio di come usare l'oggetto sezione con nome per condividere la memoria tra un processo in modalità utente e un driver in modalità kernel.

Testato su: Windows 2000, XP e Server 2003.

basic/MemoryWorks/SharingMemory

basic/MemoryWorks/SharingMemory

Questo è un esempio di un possibile modo per condividere il buffer di memoria tra modalità utente e kernel.

Testato su: Windows 2000, XP e Server 2003.

basic/MemoryWorks/SystemModules

basic/MemoryWorks/SystemModules

Questo è un esempio di come allocare memoria in modalità kernel. Per non allocarla inutilmente, la riempiamo con alcune informazioni di sistema.

Usa KmdManager per registrarlo/annullarne la registrazione e avviarlo/fermarlo. Osserva il suo output di debug con DbgView (www.sysinternals.com) o usa SoftICE.

Testato su: Windows 2000, XP e Server 2003.

basic/RegistryWorks

basic/RegistryWorks

Questo è un esempio di come creare, impostare, leggere ed eliminare una chiave di registro. Usa KmdManager per registrarlo/annullarne la registrazione e avviarlo. Osserva il suo output di debug con DbgView (www.sysinternals.com) o usa SoftICE.

Testato su: Windows 2000, XP e Server 2003.

basic/Sections

basic/Sections

Questo è un esempio di come inserire codice in diverse sezioni PE.

basic/Synchronization/MutualExclusion

basic/Synchronization/MutualExclusion

Questo è un esempio di come implementare l'accesso mutuamente esclusivo a una risorsa.

Usa KmdManager per registrarlo/annullarne la registrazione e avviarlo/fermarlo. Osserva il suo output di debug con DbgView (www.sysinternals.com) o usa SoftICE.

basic/Synchronization/SharedEvent - ProcessMon

[basic/Synchronization/SharedEvent - ProcessMon](KmdKit18/examples/basic/Synchronization/SharedEvent - ProcessMon)

Questo è un esempio di come notificare alla modalità utente che si è verificato un qualche evento.

Testato su: Windows 2000, XP e Server 2003.

basic/Synchronization/TimerWorks

basic/Synchronization/TimerWorks

Questo è un esempio di come creare, impostare, attendere e annullare un timer. Usa KmdManager per registrarlo/annullarne la registrazione e avviarlo/fermarlo. Osserva il suo output di debug con DbgView (www.sysinternals.com) o usa SoftICE.

Testato su: Windows 2000, XP e Server 2003.

basic/WorkItem

basic/WorkItem

Esempio di WorkItem

nodriver/DiskGeometry

nodriver/DiskGeometry

In questo esempio abbiamo a che fare con un dispositivo disco esistente.

Testato su: Windows 2000, XP e Server 2003

nodriver/DriveLayout

nodriver/DriveLayout

Fornisce informazioni sulle caratteristiche di ogni partizione del disco.

Testato su: Windows 2000, XP e Server 2003

nodriver/FloppyGeometry

nodriver/FloppyGeometry

In questo esempio abbiamo a che fare con un dispositivo disco esistente.

Testato su: Windows 2000, XP e Server 2003

nodriver/KbdGarland

nodriver/KbdGarland

In questo esempio abbiamo a che fare con un dispositivo tastiera esistente.

Testato su: Windows 2000, XP e Server 2003

nodriver/KbdTypematic

nodriver/KbdTypematic

In questo esempio abbiamo a che fare con un dispositivo tastiera esistente. Questo esempio offre parte delle funzionalità standard dell'applet Pannello di controllo -> Tastiera.

Testato su: Windows 2000, XP e Server 2003

nodriver/MbrDump

nodriver/MbrDump

Leggere l'MBR dalla modalità utente è la cosa più semplice da fare se sai da quale dispositivo leggere.

Testato su: Windows 2000, XP e Server 2003

nodriver/SerialBaudRate

nodriver/SerialBaudRate

In questo esempio abbiamo a che fare con un dispositivo seriale esistente.

Testato su: Windows 2000, XP e Server 2003

setup/EnumDisk

setup/EnumDisk

Questo è un esempio di come usare alcune delle funzioni di configurazione dei dispositivi (setup device functions). Enumera tutti i dispositivi disco disponibili e ottiene la proprietà del dispositivo. Eseguilo dalla riga di comando.

Testato su: Windows 2000, XP e Server 2003

simple/Beeper

simple/Beeper

Come emettere un beep con l'altoparlante di sistema.

Testato su: Windows NT4.0+sp6, 2000, XP e Server 2003

simple/DateTime

simple/DateTime

Fornisce l'accesso diretto all'I/O delle porte a un processo in modalità utente. Basato sull'articolo e sul codice sorgente C di Dale Roberts.

Testato su: Windows 2000, XP e Server 2003

simple/GetKernelBase

simple/GetKernelBase

Questo è un esempio di come trovare la base di ntoskrnl.exe.

Usa KmdManager per registrarlo/annullarne la registrazione e avviarlo/fermarlo. Osserva il suo output di debug con DbgView (www.sysinternals.com) o usa SoftICE.

Testato su: Windows 2000, XP e Server 2003

simple/NtBuild

simple/NtBuild

Dimostra la comunicazione del driver con ReadFile, senza usare nessuno dei due metodi. E come usare SEH in ring0.

Testato su: Windows 2000, XP e Server 2003

simple/Simplest

simple/Simplest

Il driver in modalità kernel più semplice possibile che non fa assolutamente nulla.

Testato su: Windows 2000, XP e Server 2003

simple/Skeleton

simple/Skeleton

Il codice scheletro per un driver di dispositivo in modalità kernel di Windows NT.

Testato su: Windows 2000, XP e Server 2003

simple/VirtToPhys

simple/VirtToPhys

Dimostra la comunicazione del driver con DeviceIoControl, usando il metodo buffered. E come tradurre gli indirizzi virtuali.

Testato su: Windows 2000, XP e Server 2003

simple/WhichIrqlAndContext

simple/WhichIrqlAndContext

Questo esempio ti permette di conoscere l'IRQL e il contesto Processo/Thread in cui vengono eseguite le routine principali del driver. Usa DebugView (www.sysinternals.com) per osservarne l'output.

Testato su: Windows 2000, XP e Server 2003

Correlati

  • https://masm32.com/board/index.php?topic=4452.0
  • http://www.masm32.com/website/kmdtute/index.html
  • https://www.asmcommunity.net/forums/topic/10872/2.html
  • http://four-f.narod.ru/
  • https://empyreal96.github.io/nt-info-depot/WinDDK.html

Ulteriori informazioni per imparare

  • https://github.com/therealdreg/x86osdev

  • Documentazione di Windows Driver Kit (WDK) Versione 7.1.0: https://www.microsoft.com/en-us/download/details.aspx?id=11800

  • Documentazione WDK: https://learn.microsoft.com/en-us/windows-hardware/drivers/download-the-wdk

  • Intel 64 and IA-32 Architectures Software Developer's Manual Combined Volumes: 1, 2A, 2B, 2C, 2D, 3A, 3B, 3C, 3D, and 4

  • Source code leak di Windows 2003, WRK, CRK ...

  • Libro Undocumented Windows NT di Prasad Dabak, Sandeep Phadke e Milind Borate

  • Libro Windows Kernel Programming di Pavel Yosifovich

  • Libri Windows Internals di Mark Russinovich, David A. Solomon e altri

  • (libro) The Rootkit Arsenal 2nd di Bill Blunden

  • (libro) What Makes It Page?: The Windows 7 (x64) Virtual Memory Manager di Enrico Martignetti

  • (libro) Subverting the Windows Kernel

  • (libro) Rootkits and Bootkits: Reversing Modern Malware and Next Generation Threats

  • osdev (community per chi è interessato allo sviluppo di sistemi operativi)

  • github/gist vari, OSR, phrack, uninformed, openrce, kernelmode, rootkit.com, arteam...

Persone da seguire

  • https://github.com/hfiref0x
  • https://github.com/rwfpl
  • https://github.com/deroko
  • https://github.com/Fyyre
  • https://github.com/Cr4sh
  • https://twitter.com/zwclose
  • https://twitter.com/yarden_shafir
  • https://twitter.com/markrussinovich
  • https://twitter.com/aionescu
  • https://twitter.com/zodiacon
  • https://github.com/TheEnergyStory
  • https://twitter.com/msuiche
  • https://twitter.com/therealdreg
  • https://twitter.com/0vercl0k
  • https://twitter.com/Ivanlef0u
  • https://twitter.com/mrexodia
  • https://twitter.com/reversemode
  • https://twitter.com/standa_t
  • https://twitter.com/richinseattle
  • https://twitter.com/gynvael
  • https://twitter.com/j00ru
  • https://twitter.com/Xylit0l
Scarica lo strumento