Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
masm32-kernel-programming — masm32 kernel programming, drivers, tutorials, examples, and tools (credits Four-F) | Kitploit
Tools/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)

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Repository anzeigenWebseite
13018vor 3 JahrenVon Kitploit geprüft

masm32-kernel-programming

Dregs Repo für seine eigenen Zwecke

masm32-Kernelprogrammierung, Treiber, Tutorials, Beispiele und Werkzeuge (Dank an Four-F)

Anleitung

  • dieses Repo herunterladen/klonen
  • masm32v11r_install.exe ausführen
  • auf das Installationsbild (Erde) klicken
  • masm32 in C:\ installieren
  • Ich empfehle, die folgenden Einträge zur PATH-Umgebungsvariable hinzuzufügen:
    • C:\masm32\bin
    • C:\masm32
  • Inhalt von KmdKit18\include\ nach C:\masm32\include\ kopieren
  • Inhalt von KmdKit18\macros\ nach C:\masm32\macros\ kopieren
  • Inhalt von KmdKit18\lib\ nach C:\masm32\lib\ kopieren

Einfaches Beispiel

  • beeper.asm nach C:\ kopieren
  • beeper.bat nach C:\ kopieren
  • beeper.bat ausführen

Zu diesem Zeitpunkt wird eine .sys-Datei in C:\ erstellt.

So laden/entladen Sie einen Treiber

w2k_load.exe - bester Weg

Treiber laden:

  • w2k_load.exe C:\beeper.sys

w2k_load.exe oder osrloader.exe melden beim Laden von beeper.sys einen Fehler – ignorieren Sie ihn einfach.

Dieser Fehler wird vom Treibercode selbst erzeugt, wenn er seine eigene Ausführung beendet (mit diesem Trick braucht man ihn nicht zu entladen).

root@kitploit:~
mov eax, STATUS_DEVICE_CONFIGURATION_ERROR
ret

Wenn beep.sys also korrekt in den Kernel geladen wurde, sollten Sie einen Piepton aus Ihren Lautsprechern hören (der Treibercode erzeugt einen Piepton).

Wenn Sie einen Treiber entladen müssen, verwenden Sie:

  • w2k_load.exe PATH_SYS_FILE /unload

Ich habe w2k_load.exe von Sven B. Schreiber modifiziert, damit es von Windows 2000 bis Windows 10 funktioniert (Manifest...).

osrloader

Entpacken Sie osrloaderv30.zip und verwenden Sie dieses GUI-Programm:

  • Wählen Sie eine .sys-Datei aus (Treiberpfad)
  • Dienst registrieren
  • Dienst starten

Debug-Meldungen ohne windbg anzeigen

Verwenden Sie für ältere Windows-Versionen einfach das in diesem Repo enthaltene DbgView.exe. Übrigens habe ich es modifiziert (Manifest...).

Verwenden Sie für moderne Windows-Versionen die neueste dbgview.exe von der Sysinternals-Website und sehen Sie sich dies zur Fehlerbehebung an:

  • 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

Nächste Schritte

Lesen Sie die .pdf-Dateien in diesem Repo und schauen Sie sich die Beispiele im Verzeichnis KmdKit18/examples an.

WARNUNG: Der gesamte ASM-Quellcode befindet sich in .bat-Dateien (Batch- und ASM-Code gemischt in derselben Datei).

Beispiel mit 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

Diese Datei enthält BATCH-Code, der eine .sys erzeugt, sowie den eigentlichen Treiberquellcode. Ja, es ist sehr knifflig – Build-Skript und Quellcode sind zusammen.

advanced/FindShadowTable

advanced/FindShadowTable

Dies ist ein Beispiel, wie man ServiceDescriptorTableShadow findet.

Es scannt lediglich Threads mit der ID 80h-400h, um einen Thread zu finden, dessen KTHREAD.ServiceTable ungleich KeServiceDescriptorTable ist. Wenn ein solcher Thread gefunden wird, enthält sein KTHREAD.ServiceTable die Adresse von ServiceDescriptorTableShadow.

Beobachten Sie die Debug-Ausgabe des Treibers mit DbgView (www.sysinternals.com) oder verwenden Sie SoftICE.

Getestet unter: Windows 2000, XP und Server 2003.

advanced/KbdSpy

advanced/KbdSpy

Dies ist ein Beispiel für einen einfachen Legacy- (Nicht-PnP-) PS/2-Tastaturfiltertreiber. WARNUNG: Sie werden ihn nicht an den USB-Tastaturstack anhängen können.

Getestet unter: Windows 2000, XP und Server 2003.

advanced/MouSpy

advanced/MouSpy

Four-F, [email protected] Diese Makrodateien stammen aus meinem Paket cocomac.

Dies ist ein Beispiel für einen einfachen Legacy- (Nicht-PnP-) PS/2-Mausfiltertreiber. WARNUNG: Sie werden ihn nicht an den USB-Mausstack anhängen können.

Getestet unter: Windows 2000, XP und Server 2003.

advanced/SecureDevices

advanced/SecureDevices

Dies ist ein Beispiel, wie man bestimmte Sicherheitseinstellungen auf ein benanntes Geräteobjekt anwendet, indem man IoCreateDeviceSecure anstelle von IoCreateDevice aufruft.

Da die Routine IoCreateDeviceSecure nicht Teil des Betriebssystems ist, binden wir wdmsec.lib ein, die alle benötigten Routinen enthält.

Die wdmsec.lib-Bibliothek, die Sie hier finden, ist nicht die mit dem DDK gelieferte. Ich musste sie neu erstellen, um ihre Größe zu reduzieren und nicht benötigte Member zu entfernen.

basic/FileWorks

basic/FileWorks

Dies ist ein Beispiel, wie man eine Datei erstellt, in sie schreibt, aus ihr liest und sie löscht.

Verwenden Sie KmdManager, um den Treiber zu registrieren/deregistrieren und zu starten. Beobachten Sie seine Debug-Ausgabe mit DbgView (www.sysinternals.com) oder verwenden Sie SoftICE.

Getestet unter: Windows 2000, XP und Server 2003.

basic/HiddenDriver

basic/HiddenDriver

Dies ist ein Beispiel, wie man den Treiber in Ressourcen verpackt.

Getestet unter: Windows 2000, XP und Server 2003.

basic/IsSafeBootMode

basic/IsSafeBootMode

So erfahren Sie, ob das System im abgesicherten Modus läuft oder nicht.

Verwenden Sie KmdManager, um den Treiber zu registrieren/deregistrieren und zu starten. Beobachten Sie seine Debug-Ausgabe mit DbgView (www.sysinternals.com) oder verwenden Sie SoftICE.

Getestet unter: Windows 2000, XP und Server 2003.

basic/MemoryWorks/LookasideList

basic/MemoryWorks/LookasideList

Dies ist ein Beispiel, wie man eine Lookaside-Liste und eine doppelt verknüpfte Liste verwendet, um die aus der Lookaside-Liste zugewiesenen Speicherblöcke zu verwalten.

Verwenden Sie KmdManager, um den Treiber zu registrieren/deregistrieren und zu starten/stoppen. Beobachten Sie seine Debug-Ausgabe mit DbgView (www.sysinternals.com) oder verwenden Sie SoftICE.

Getestet unter: Windows 2000, XP und Server 2003.

basic/MemoryWorks/seh

basic/MemoryWorks/seh

Dies ist ein Beispiel, wie man Ausnahmen mit SEH behandelt. Aber denken Sie daran. MAN KANN NICHT ALLE AUSNAHMEN MIT SEH IM KERNELMODUS BEHANDELN!

Verwenden Sie KmdManager, um den Treiber zu registrieren/deregistrieren und zu starten/stoppen. Beobachten Sie seine Debug-Ausgabe mit DbgView (www.sysinternals.com) oder verwenden Sie SoftICE.

Getestet unter: Windows 2000, XP und Server 2003.

basic/MemoryWorks/SharedSection

basic/MemoryWorks/SharedSection

Dies ist ein Beispiel, wie man ein benanntes Section-Objekt verwendet, um Speicher zwischen einem Benutzermodusprozess und einem Kernelmodus-Treiber zu teilen.

Getestet unter: Windows 2000, XP und Server 2003.

basic/MemoryWorks/SharingMemory

basic/MemoryWorks/SharingMemory

Dies ist ein Beispiel für eine mögliche Methode, den Speicherpuffer zwischen Benutzer- und Kernelmodus zu teilen.

Getestet unter: Windows 2000, XP und Server 2003.

basic/MemoryWorks/SystemModules

basic/MemoryWorks/SystemModules

Dies ist ein Beispiel, wie man Speicher im Kernelmodus allokiert. Um ihn nicht nutzlos zu allokieren, füllen wir ihn mit einigen Systeminformationen.

Verwenden Sie KmdManager, um den Treiber zu registrieren/deregistrieren und zu starten/stoppen. Beobachten Sie seine Debug-Ausgabe mit DbgView (www.sysinternals.com) oder verwenden Sie SoftICE.

Getestet unter: Windows 2000, XP und Server 2003.

basic/RegistryWorks

basic/RegistryWorks

Dies ist ein Beispiel, wie man den Registrierungsschlüssel erstellt, setzt, liest und löscht. Verwenden Sie KmdManager, um den Treiber zu registrieren/deregistrieren und zu starten. Beobachten Sie seine Debug-Ausgabe mit DbgView (www.sysinternals.com) oder verwenden Sie SoftICE.

Getestet unter: Windows 2000, XP und Server 2003.

basic/Sections

basic/Sections

Dies ist ein Beispiel, wie man Code in verschiedenen PE-Sections unterbringt.

basic/Synchronization/MutualExclusion

basic/Synchronization/MutualExclusion

Dies ist ein Beispiel, wie man den wechselseitig ausschließlichen Zugriff auf die Ressource implementiert.

Verwenden Sie KmdManager, um den Treiber zu registrieren/deregistrieren und zu starten/stoppen. Beobachten Sie seine Debug-Ausgabe mit DbgView (www.sysinternals.com) oder verwenden Sie SoftICE.

Getestet unter: Windows 2000, XP und Server 2003.

basic/Synchronization/SharedEvent - ProcessMon

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

Dies ist ein Beispiel, wie man den Benutzermodus darüber benachrichtigt, dass ein bestimmtes Ereignis eingetreten ist.

Getestet unter: Windows 2000, XP und Server 2003.

basic/Synchronization/TimerWorks

basic/Synchronization/TimerWorks

Dies ist ein Beispiel, wie man den Timer erstellt, setzt, auf ihn wartet und ihn abbricht. Verwenden Sie KmdManager, um den Treiber zu registrieren/deregistrieren und zu starten/stoppen. Beobachten Sie seine Debug-Ausgabe mit DbgView (www.sysinternals.com) oder verwenden Sie SoftICE.

Getestet unter: Windows 2000, XP und Server 2003.

basic/WorkItem

basic/WorkItem

WorkItem-Beispiel

nodriver/DiskGeometry

nodriver/DiskGeometry

In diesem Beispiel arbeiten wir mit einem vorhandenen Festplattengerät.

Getestet auf: Windows 2000, XP und Server 2003

nodriver/DriveLayout

nodriver/DriveLayout

Stellt Informationen über die Eigenschaften jeder Datenträgerpartition bereit.

Getestet auf: Windows 2000, XP und Server 2003

nodriver/FloppyGeometry

nodriver/FloppyGeometry

In diesem Beispiel arbeiten wir mit einem vorhandenen Diskettenlaufwerk.

Getestet auf: Windows 2000, XP und Server 2003

nodriver/KbdGarland

nodriver/KbdGarland

In diesem Beispiel arbeiten wir mit einem vorhandenen Tastaturgerät.

Getestet auf: Windows 2000, XP und Server 2003

nodriver/KbdTypematic

nodriver/KbdTypematic

In diesem Beispiel arbeiten wir mit einem vorhandenen Tastaturgerät. Dieses Beispiel bietet einen Teil der Funktionen des Standard-Applets „Tastatur“ in der Systemsteuerung.

Getestet auf: Windows 2000, XP und Server 2003

nodriver/MbrDump

nodriver/MbrDump

Das Lesen des MBR aus dem Benutzermodus ist die einfachste Sache, wenn man weiß, von welchem Gerät man lesen muss.

Getestet auf: Windows 2000, XP und Server 2003

nodriver/SerialBaudRate

nodriver/SerialBaudRate

In diesem Beispiel arbeiten wir mit einem vorhandenen seriellen Gerät.

Getestet auf: Windows 2000, XP und Server 2003

setup/EnumDisk

setup/EnumDisk

Dies ist ein Beispiel, wie man einige der Setup-Gerätefunktionen verwendet. Listet alle verfügbaren Datenträgergeräte auf und ruft die Geräteeigenschaft ab. Führen Sie es über die Befehlszeile aus.

Getestet auf: Windows 2000, XP und Server 2003

simple/Beeper

simple/Beeper

So erzeugen Sie einen Piepton mit dem Systemlautsprecher.

Getestet auf: Windows NT4.0+sp6, 2000, XP und Server 2003

simple/DateTime

simple/DateTime

Gewährt einem Benutzermodusprozess direkten Port-I/O-Zugriff. Basiert auf Dale Roberts' Artikel und C-Quellcode.

Getestet auf: Windows 2000, XP und Server 2003

simple/GetKernelBase

simple/GetKernelBase

Dies ist ein Beispiel, wie man die Basis von ntoskrnl.exe findet.

Verwenden Sie KmdManager, um den Treiber zu registrieren/deregistrieren und zu starten/stoppen. Beobachten Sie seine Debug-Ausgabe mit DbgView (www.sysinternals.com) oder verwenden Sie SoftICE.

Getestet auf: Windows 2000, XP und Server 2003

simple/NtBuild

simple/NtBuild

Demonstriert die Treiberkommunikation mit ReadFile, wobei keine der Methoden verwendet wird. Und wie man SEH in Ring0 verwendet.

Getestet auf: Windows 2000, XP und Server 2003

simple/Simplest

simple/Simplest

Der einfachstmögliche Kernelmodus-Treiber, der absolut nichts tut.

Getestet auf: Windows 2000, XP und Server 2003

simple/Skeleton

simple/Skeleton

Der Gerüstcode für einen Windows-NT-Kernelmodus-Gerätetreiber.

Getestet auf: Windows 2000, XP und Server 2003

simple/VirtToPhys

simple/VirtToPhys

Demonstriert die Treiberkommunikation mit DeviceIoControl unter Verwendung der gepufferten Methode. Und wie man virtuelle Adressen übersetzt.

Getestet auf: Windows 2000, XP und Server 2003

simple/WhichIrqlAndContext

simple/WhichIrqlAndContext

Dieses Beispiel zeigt Ihnen die IRQL und den Prozess-/Thread-Kontext, in dem die Hauptroutinen des Treibers ausgeführt werden. Verwenden Sie DebugView (www.sysinternals.com), um seine Ausgabe zu beobachten.

Getestet auf: Windows 2000, XP und Server 2003

Verwandte Links

  • 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

Weitere Informationen zum Lernen

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

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

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

  • Intel 64- und IA-32-Architekturen, Softwareentwickler-Handbuch, kombinierte Bände: 1, 2A, 2B, 2C, 2D, 3A, 3B, 3C, 3D und 4

  • Windows-2003-Quellcode-Leak, WRK, CRK ...

  • Buch „Undocumented Windows NT“ von Prasad Dabak, Sandeep Phadke und Milind Borate

  • Buch „Windows Kernel Programming“ von Pavel Yosifovich

  • Bücher „Windows Internals“ von Mark Russinovich, David A. Solomon und anderen

  • (Buch) The Rootkit Arsenal, 2. Auflage, von Bill Blunden

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

  • (Buch) Subverting the Windows Kernel

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

  • osdev (Community für alle, die sich für Betriebssystementwicklung interessieren)

  • verschiedene GitHub/Gists, OSR, Phrack, Uninformed, OpenRCE, KernelMode, Rootkit.com, ARTeam ...

Personen, denen man folgen kann

  • 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
Tool herunterladen