
masm32 kernel programming, drivers, tutorials, examples, and tools (credits Four-F)
Dépôt de Dreg pour ses propres besoins
Programmation noyau masm32, pilotes, tutoriels, exemples et outils (crédits Four-F)
À ce stade, un .sys est créé dans C:\
charger le pilote :
w2k_load.exe ou osrloader.exe affiche une erreur lors du chargement de beeper.sys, ignorez-la simplement.
Cette erreur est générée par le code du pilote lui-même lorsqu'il termine sa propre exécution (avec cette astuce, vous n'avez pas besoin de le décharger).
mov eax, STATUS_DEVICE_CONFIGURATION_ERROR
ret
Ainsi, si beep.sys est correctement chargé dans le noyau, vous devriez entendre un bip dans vos haut-parleurs (le code du pilote génère un bip).
Quand vous devez décharger un pilote, utilisez :
J'ai modifié w2k_load.exe de Sven B. Schreiber pour qu'il fonctionne de Windows 2000 à Windows 10 (manifeste...).
dézippez osrloaderv30.zip et utilisez ce programme graphique :
pour anciennes versions de Windows, utilisez simplement DbgView.exe fourni dans ce dépôt. Au fait, je l'ai modifié (manifeste...).
Pour les versions modernes de Windows, utilisez le dernier dbgview.exe du site sysinternals, et consultez ceci pour le dépannage :
Lisez les fichiers .pdf de ce dépôt et regardez les exemples dans le répertoire KmdKit18/examples.
AVERTISSEMENT : TOUT le code source ASM se trouve dans des fichiers .bat (code batch + asm mélangés dans le même fichier).
Exemple avec advanced\FindShadowTable\FindShadowTable.bat
;@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
Ce fichier contient du code BATCH qui génère un .sys et contient également le code source du pilote lui-même. Donc, oui, c'est très retors, le script de compilation et le code source sont ensemble.
Ceci est un exemple de la façon de trouver ServiceDescriptorTableShadow.
Il scanne simplement les threads dont l'ID est compris entre 80h et 400h pour tenter de trouver un thread dont KTHREAD.ServiceTable n'est pas égal à KeServiceDescriptorTable. Si un tel thread est trouvé, son KTHREAD.ServiceTable contient l'adresse de ServiceDescriptorTableShadow.
Surveillez la sortie de débogage du pilote avec DbgView (www.sysinternals.com) ou utilisez SoftICE.
Testé sous : Windows 2000, XP et Server 2003.
Ceci est un exemple d'un simple pilote filtre de clavier PS/2 hérité (non PnP). AVERTISSEMENT : vous ne pourrez pas l'attacher à la pile de clavier USB.
Testé sous : Windows 2000, XP et Server 2003.
Four-F, [email protected]. Ces fichiers de macros proviennent de mon package cocomac.
Ceci est un exemple d'un simple pilote filtre de souris PS/2 héritée (non PnP). AVERTISSEMENT : vous ne pourrez pas l'attacher à la pile de souris USB.
Testé sous : Windows 2000, XP et Server 2003.
Ceci est un exemple de la façon d'appliquer des paramètres de sécurité particuliers à un objet de périphérique nommé en appelant IoCreateDeviceSecure au lieu de IoCreateDevice.
Comme la routine IoCreateDeviceSecure ne fait pas partie du système d'exploitation, nous lions wdmsec.lib, qui contient toutes les routines nécessaires.
La bibliothèque wdmsec.lib que vous trouverez ici n'est pas celle fournie avec le DDK. J'ai dû la reconstruire pour réduire sa taille, en supprimant les membres inutiles.
Ceci est un exemple de la façon de créer, d'écrire dans, de lire et de supprimer le fichier.
Utilisez KmdManager pour enregistrer/désenregistrer et démarrer. Surveillez sa sortie de débogage avec DbgView (www.sysinternals.com) ou utilisez SoftICE.
Testé sous : Windows 2000, XP et Server 2003.
Ceci est un exemple de la façon d'empaqueter le pilote dans les ressources.
Testé sous : Windows 2000, XP et Server 2003.
La façon de savoir si le système fonctionne en mode sans échec ou non.
Utilisez KmdManager pour enregistrer/désenregistrer et démarrer. Surveillez sa sortie de débogage avec DbgView (www.sysinternals.com) ou utilisez SoftICE.
Testé sous : Windows 2000, XP et Server 2003.
basic/MemoryWorks/LookasideList
Ceci est un exemple de la façon d'utiliser une liste lookaside et une liste doublement chaînée pour gérer les blocs de mémoire alloués à partir de la liste lookaside.
Utilisez KmdManager pour enregistrer/désenregistrer et démarrer/arrêter. Surveillez sa sortie de débogage avec DbgView (www.sysinternals.com) ou utilisez SoftICE.
Testé sous : Windows 2000, XP et Server 2003.
Ceci est un exemple de la façon de gérer les exceptions avec SEH. Mais souvenez-vous. VOUS NE POUVEZ PAS GÉRER TOUTES LES EXCEPTIONS AVEC SEH EN MODE NOYAU !
Utilisez KmdManager pour enregistrer/désenregistrer et démarrer/arrêter. Surveillez sa sortie de débogage avec DbgView (www.sysinternals.com) ou utilisez SoftICE.
Testé sous : Windows 2000, XP et Server 2003.
basic/MemoryWorks/SharedSection
Ceci est un exemple de la façon d'utiliser un objet de section nommé pour partager la mémoire entre un processus en mode utilisateur et un pilote en mode noyau.
Testé sous : Windows 2000, XP et Server 2003.
basic/MemoryWorks/SharingMemory
Ceci est un exemple d'une façon possible de partager le tampon mémoire entre le mode utilisateur et le mode noyau.
Testé sous : Windows 2000, XP et Server 2003.
basic/MemoryWorks/SystemModules
Ceci est un exemple de la façon d'allouer de la mémoire en mode noyau. Pour ne pas l'allouer inutilement, nous la remplissons avec quelques informations système.
Utilisez KmdManager pour enregistrer/désenregistrer et démarrer/arrêter. Surveillez sa sortie de débogage avec DbgView (www.sysinternals.com) ou utilisez SoftICE.
Testé sous : Windows 2000, XP et Server 2003.
Ceci est un exemple de la façon de créer, définir, lire et supprimer la clé de registre. Utilisez KmdManager pour enregistrer/désenregistrer et démarrer. Surveillez sa sortie de débogage avec DbgView (www.sysinternals.com) ou utilisez SoftICE.
Testé sous : Windows 2000, XP et Server 2003.
Ceci est un exemple de la façon de placer du code dans différentes sections PE.
basic/Synchronization/MutualExclusion
Ceci est un exemple de la façon d'implémenter l'accès mutuellement exclusif à la ressource.
Utilisez KmdManager pour enregistrer/désenregistrer et démarrer/arrêter. Surveillez sa sortie de débogage avec DbgView (www.sysinternals.com) ou utilisez SoftICE.
[basic/Synchronization/SharedEvent - ProcessMon](KmdKit18/examples/basic/Synchronization/SharedEvent - ProcessMon)
Ceci est un exemple de la façon de notifier le mode utilisateur qu'une sorte d'événement s'est produite.
Testé sous : Windows 2000, XP et Server 2003.
basic/Synchronization/TimerWorks
Ceci est un exemple de la façon de créer, définir, attendre et annuler le minuteur. Utilisez KmdManager pour enregistrer/désenregistrer et démarrer/arrêter. Surveillez sa sortie de débogage avec DbgView (www.sysinternals.com) ou utilisez SoftICE.
Testé sous : Windows 2000, XP et Server 2003.
Exemple WorkItem
Dans cet exemple, nous traitons avec un périphérique disque existant.
Testé sur : Windows 2000, XP et Server 2003
Fournit des informations sur les caractéristiques de chaque partition de disque.
Testé sur : Windows 2000, XP et Server 2003
Dans cet exemple, nous traitons avec un périphérique disque existant.
Testé sur : Windows 2000, XP et Server 2003
Dans cet exemple, nous traitons avec un périphérique clavier existant.
Testé sur : Windows 2000, XP et Server 2003
Dans cet exemple, nous traitons avec un périphérique clavier existant. Cet exemple offre une partie des fonctionnalités de l'applet standard Panneau de configuration -> Clavier.
Testé sur : Windows 2000, XP et Server 2003
Lire le MBR depuis le mode utilisateur est la chose la plus facile à faire si vous savez à partir de quel périphérique lire.
Testé sur : Windows 2000, XP et Server 2003
Dans cet exemple, nous traitons avec un périphérique série existant.
Testé sur : Windows 2000, XP et Server 2003
Ceci est un exemple de la façon d'utiliser certaines des fonctions de périphérique d'installation. Énumère tous les périphériques disque disponibles et obtient la propriété du périphérique. Exécutez-le depuis la ligne de commande.
Testé sur : Windows 2000, XP et Server 2003
Comment émettre un bip avec le haut-parleur système.
Testé sur : Windows NT4.0+sp6, 2000, XP et Server 2003
Donne un accès direct aux E/S de port à un processus en mode utilisateur. Basé sur l'article de Dale Roberts et le code source c.
Testé sur : Windows 2000, XP et Server 2003
Ceci est un exemple de la façon de trouver la base de ntoskrnl.exe.
Utilisez KmdManager pour enregistrer/désenregistrer et démarrer/arrêter. Surveillez sa sortie de débogage avec DbgView (www.sysinternals.com) ou utilisez SoftICE.
Testé sur : Windows 2000, XP et Server 2003
Démontre la communication du pilote avec ReadFile, en utilisant aucune des deux méthodes. Et comment utiliser SEH en ring0.
Testé sur : Windows 2000, XP et Server 2003
Le pilote en mode noyau le plus simple possible qui ne fait absolument rien.
Testé sur : Windows 2000, XP et Server 2003
Le code squelette d'un pilote de périphérique en mode noyau Windows NT.
Testé sur : Windows 2000, XP et Server 2003
Démontre la communication du pilote avec DeviceIoControl, en utilisant la méthode tamponnée. Et comment traduire les adresses virtuelles.
Testé sur : Windows 2000, XP et Server 2003
Cet exemple vous permet de connaître l'IRQL et le contexte Processus/Thread auquel les routines principales du pilote s'exécutent. Utilisez DebugView (www.sysinternals.com) pour surveiller sa sortie.
Testé sur : Windows 2000, XP et Server 2003
Documentation du Windows Driver Kit (WDK) version 7.1.0 : https://www.microsoft.com/en-us/download/details.aspx?id=11800
Documentation WDK : https://learn.microsoft.com/en-us/windows-hardware/drivers/download-the-wdk
Manuel du développeur de logiciels des architectures Intel 64 et IA-32, volumes combinés : 1, 2A, 2B, 2C, 2D, 3A, 3B, 3C, 3D et 4
Fuite du code source de Windows 2003, WRK, CRK ...
Livre Undocumented Windows NT de Prasad Dabak, Sandeep Phadke et Milind Borate
Livre Windows Kernel Programming de Pavel Yosifovich
Livres Windows Internals de Mark Russinovich, David A. Solomon et d'autres
(livre) The Rootkit Arsenal 2nd de Bill Blunden
(livre) What Makes It Page?: The Windows 7 (x64) Virtual Memory Manager par Enrico Martignetti
(livre) Subverting the Windows Kernel
(livre) Rootkits and Bootkits: Reversing Modern Malware and Next Generation Threats
osdev (communauté pour les personnes intéressées par le développement de systèmes d'exploitation)
github/gist divers, OSR, phrack, uninformed, openrce, kernelmode, rootkit.com, arteam...