KLOG
Parfois il m’arrive de vouloir codé un jouet à partir d’un autre, loin de moi l’idée de recopier du code, mais plutot d’améliorer le concept. Mon histoire a commencé en découvrant Klog, un kernel keylogger codé par Clandestiny. Je part dans l’optique d’améliorer le programme, de faire un code plus propre, en pensant que même avec mes connaissances faible de programmation KernelLand je serais capable de faire mieux…
Ainsi la théorie voudrait que le programme fonctionne de cette manière :
1) On attache un filter device au dessus du device KeyboardClass0 qui est le device primaire du driver I8042prt qui gère le clavier et la souris.
2) On filtre les réquetes (IRP) en s’intéressant uniquement à celle qui correspondent aux touches, les autres ont les refilent au device primaire .
3) Jusqu’a là tout va bien, il ne reste plus qu’a récupérer les scancodes de les encoder en ASCII et hop d’écrire tout ca dans un joli fichier. Mais la BOOM BIG BADABOOM BIG !!, la routine chargé de cette tâche tourne à un IRQL valant DISPATCH_LEVEL (3) et l’API native ZwWriteFile ne peut tourner qu’au niveau PASSIVE_LEVEL (0), le programme plante, BSOD in my face OUINN!
L’idée de Clandestiny pour contourner ce problème a été de créer un thread kernel tournant en IRQL PASSIVE_LEVEL qui attend gentiment les touches à enregistrer. C’est à ce moment là que je me dis « mouais, ca suxx ffs, on peut virer ca et trouver un autre trick ». Je commence donc ma recherche, lisant le DDK dans tout les sens, des ebooks sur la programmation avec le windows driver model, cherchant des codes sur le net avec google code search, 3 jours passent ainsi, la traverser du desert, sentiment de frustation du kodeur qui ne trouve pas de solution ….
RIEN ! au final je doit bien l’avouer, ce programme est ultime, Clandestiny a tout simplement implémenté la meilleure solution, je ne peux que m’incliner..
Cependant j’en ai profité pour faire fonctionner le keylog avec les claviers fr et j’ai ajouté le petit code pour hider un driver dans la PsLoadedModuleList, juste pour pouvoir dire que j’ai fait qqch
Voici donc la version originale du code :
http://ivanlef0u.fr/repo/Klog%201.0.zip
et la mienne avec le support fr et le hiding de driver :
http://ivanlef0u.fr/repo/Klog-fr-enhanced.rar
Voilà j’espère que ca vous plaira.
Merci à b0nd pour avoir briser mon rêve
2 comments janvier 20th, 2007