Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1139 connectés 

  FORUM HardWare.fr
  Programmation
  ASM

  gestion d'intérruptions, modification 80x86

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

gestion d'intérruptions, modification 80x86

n°1975998
indiannajo​nes22
Posté le 22-03-2010 à 15:47:08  profilanswer
 

Bonjour,
j'essaie de m'informer sur le sujet mais j'ai bien de la misère à trouver. Je programme en asm 80x86 et j'essaie de modifier l'interruption 9h de la table de vecteur d'interruption. Je sais que pour ce faire, je dois modifié le IP qui pointera sur la nouvelle instruction que je déciderai. Par contre, je ne sais tout simplement pas à quoi devrait ressembler ma nouvelle instruction. Je veut que mon interruption matérielle(dans ce cas-ci gérée par le clavier) affiche la caractère en décimal choisi sur le clavier.
J'ai essayé certaines choses par contre... rien n'abouti.
Merci de m'éclairer un peu!

mood
Publicité
Posté le 22-03-2010 à 15:47:08  profilanswer
 

n°1976231
Kenelm
Posté le 23-03-2010 à 11:09:46  profilanswer
 

Quand tu parles de la nouvelle instruction, tu veux dire "l'instruction sur laquelle pointe l'IP" ?
 
Parce que de mémoire y'a rien de spécifique... à part qu'à la fin évidemment faut balancer le bon return pour revenir au point d'interruption, mais au début, que dalle.

n°1976257
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 23-03-2010 à 11:35:13  profilanswer
 

"Modifier le IP qui pointera sur la nouvelle instruction que je déciderai"....

 

Mais ça va pas non ? et l'adresse de retour, tu la récupères comment ? Et le contexte de pile, et tout ? T'as envie de bloquer ta machine toi hein [:mlc]

 

Le détournement d'un vecteur d'interruption se fait de la manière suivante :
- on sauvegarde d'abord l'adresse de l'ancien handler (fonction 35h de l'interruption 21h)
- on met en place le nouveau handler (fonction 25h de l'interruption 21h)
- une fois le boulot terminé, on remet tout en place (idem)

 

exemple

Code :
  1. ; d'abord, on sauvegarde l'ancien handler
  2. mov ax, 0x3509 ; ah=0x35, al=0x09, cf la doc de int 21h. on récupère l'ancien handler en es:bx
  3. les bx, oldhandler ; adresse de "oldhandler" dans es:bx (utilisé par 21h pour y stocker l'adresse de l'ancien vecteur)
  4. int 21h
  5.  
  6. ; on met en place le nouveau handler
  7. mov ax, 0x2509 ; service 25h de int 21h utilisé, cf doc
  8. lds dx, newhandler ;
  9. int 21h
  10.  
  11. ; et on remet tout en place quand c'est terminé
  12. mov ax, 0x2509
  13. lds dx, oldhandler
  14. int 21h
 

Ne pas oublier de terminer le code de ton vecteur par l'instruction "iret".

 

La doc de 21h, service 35h : http://www.gladir.com/LEXIQUE/INTR/int21f35.htm
Et celle du service 25h : http://www.gladir.com/LEXIQUE/INTR/int21f25.htm


Message édité par Harkonnen le 23-03-2010 à 11:42:26

---------------
J'ai un string dans l'array (Paris Hilton)
n°1985038
PigeonV
Posté le 17-04-2010 à 09:47:38  profilanswer
 

A la fin de ton interruption matérielle tu es obligé d'envoyer 0x20 sur le port 0x20 avant le iret.
Evite aussi de massacrer les registres : voilà pourquoi tu devras empiler ceux que tu modifies sur la pile (et pas oublier de les dépiler avant le iret)


---------------
VB.NET is good ... VB6 is better !

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  ASM

  gestion d'intérruptions, modification 80x86

 

Sujets relatifs
Gestion de Projet VB6 sous CVSGestion optimisé d'inclusion php
[Réflexion] Développement d'applications de gestion en webModification driver?
Modification simple macromodification d'un petit programme
Modification du template universatil joomlaStratégie de gestion de multilangue
[VBSCRIPT] Modifier nom affiché sur le bureau pour "Mes documents"Gestion LOGIN - PASSWORD
Plus de sujets relatifs à : gestion d'intérruptions, modification 80x86


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR