Fonctionnement bas niveau clavier

Fonctionnement bas niveau clavier - ASM - Programmation

Marsh Posté le 27-03-2007 à 18:55:04    

Je cherche des info sur le principe de fonctionnement des claviers ainsi que sur leur programmation bas niveau.
Je préfère demander à des gars qui font de l'asm car ils sont les seuls véritables qui existent en ce bas monde.
 
Voici le problème que j'ai
J'ai fait un programme en c avec des hook pour substituer des touches par d'autres avec une IHM en .net  http://darkfl0.free.fr/GowuToy/GowuToy.net.v0.4.zip
 
Mais ce programme ne fonctionne pas avec certains jeux directx.
- Je vais chercher les API directx incriminées en faisant un mini programme pour mettre en defaut GowuToy.
- Une fois ce programme, je vais chercher des méthodes de contournement.
 
Dans le pire des cas, il semblerait que je sois obligé de coder un driver en mode noyau.
 
J'ai deja trouvé un lien sur le developpement de driver windows en ASM  : http://www.freewebs.com/four-f/
Il faut que je me penche serieusement sur le fct du clavier.
 
Donc si vous avez des liens je suis preneur.  
 

Reply

Marsh Posté le 27-03-2007 à 18:55:04   

Reply

Marsh Posté le 27-03-2007 à 19:11:23    

Ya comme une méprise, le principe même d'un OS c'est d'abstraire et de contrôler les accès. Donc exit le bas niveau. Ensuite un driver dans un OS monolithique est forcément exécuté dans l'espace du noyau (sinon soit ce n'est pas un driver, soit ce n'est pas un OS monolithique). Enfin il n'y aucune raison de s'emmerder à écrire un driver en asm, le C c'est pas fait pour les chiens.
 
Je ne me souviens plus des détails, mais il est possible d'insérer une sorte de filtre au milieu de la chaine des bidules en charge de gérer les entrées (souris, clavier etc...) sur w2k et xp. Et je suppose que c'est autrement plus chiant sur Vista. Insertion, détournement des flux et hop.
 
Sinon, autre possibilité (plus simple), en restant dans l'espace utilisateur et vu que la cible connue (machin lié à directx), il suffit de parasiter ces dlls (par exemple par injection dans le process qui les utilise etc...).
Google ftw. Et bon courage.
 

Reply

Marsh Posté le 27-03-2007 à 19:20:42    

Les filtres en question
http://www.microsoft.com/whdc/device/input/drv.mspx (si je me souviens bien il y a un exemple qui va bien dans le ddk)
 
Pour l'injection voir par exemple
http://research.microsoft.com/sn/detours/
Il y eut un temps ou les sources étaient fournis...

Reply

Marsh Posté le 27-03-2007 à 22:06:22    

thx je vais jetter un oeil

Reply

Marsh Posté le 04-04-2007 à 18:06:57    

Bonjour, j'ai un peu avancer depuis la dernière fois.
 
Pour trouver les api de direct input qui mettent en defaut mon programme GowuToy, j'ai developpé : http://darkfl0.free.fr/GowuToy/testkb.V0.1.0.0.zip qui permet entre autre de tester le nombre d'appuis simultanés que supporte un clavier. Apparamment il s'agit de GetCurrentKeyboardState qui ne vois pas les touches générées par  la fonction keybd_event.
 
Je n'ai pas regardé la technique d'injection. Je vais plutot me concentrer sur le filtre mais en C, et comme c'est un driver je vais gouter aux joies du ring 0.
 
Microsoft à renommer le DDK en WDK mais il est téléchargeable gratuitement. Il contient deux exemples de filtres dont l'un utilise un framework microsoft pour developper les drivers. Je vais largement m'en inspirer.
 
Pour le debugage d'un driver j'ai pas trop d'idée. Je vais aussi mettre vmware pour ne pas planter mon windows on ne sait jamais !!!
 
Mais le developpement de driver ca à l'air assez chaud, je suis preneur pour toutes doc et ref sur le developpement de drivers sous windows.
 
 
 


Message édité par OdbO le 04-04-2007 à 18:18:48
Reply

Marsh Posté le 04-04-2007 à 20:41:57    

Cela fait long que je n'ai pas écrit de driver et je serais bien en peine d'indiquer les bouquins de référence du moment. Je doute qu'il y ait bcp d'infos (utile) sur le net, vu l'expertise requise pour écrire ce genre de truc... et puis c'st un OS proprietaire...  
Mais bon si c'est juste pour ajuster un filtre, avec le DDK sous le coude... à coeur vaillant rien d'impossible.
 
Je ferais tout de même remarquer qu'un driver est une chienlit ne serait-ce qu'à maintenir. C'est a peu près aussi drole que de se casser un bras, alors que les techniques d'injections...
 
Sinon http://en.wikipedia.org/wiki/SoftICE / remote debugger.
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed