
masm32 programmation noyau, pilotes, tutoriels, exemples et outils (crédits 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.