IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

x86 16-bits Assembleur Discussion :

Détourner une interruption


Sujet :

x86 16-bits Assembleur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Novembre 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 7
    Par défaut Détourner une interruption
    Bonjour,

    J'ai besoin de votre aide : je veux écrire un programme en langage assembleur qui détourne une interruption système et je ne sais pas comment faire.

    Voici le ficher de TP (dans les pieces jointes).
    Images attachées Images attachées

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 487
    Par défaut
    Si c'est sous MS-DOS et en mode réel, la table des interruptions se trouve au début de la mémoire, en 0000:0000. Il y a 4 octets par interruption, contenant l'adresse de la routine à appeler.

    Si tu veux en détourner une, il suffit de sauvegarder le contenu des quatre octets correspondant à ton interruption, et de le remplacer par l'adresse de ta propre routine, laquelle appelera toute seule la routine originale après avoir fait son propre traitement.

    Je ne me souviens plus s'il existe un appel dédié pour le faire. C'est vieux, tout ça ...

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mai 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Oise (Picardie)

    Informations forums :
    Inscription : Mai 2009
    Messages : 36
    Par défaut
    Citation Envoyé par Obsidian Voir le message
    Je ne me souviens plus s'il existe un appel dédié pour le faire. C'est vieux, tout ça ...
    Tu as raison, Obsidian. Il éxiste bien une interruption das l'API de MS-DOS permettant de le faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    INT 21 - DOS 1+ - SET INTERRUPT VECTOR
    	AH = 25h
    	AL = interrupt number
    	DS:DX -> new interrupt handler
    Notes:	this function is preferred over direct modification of the interrupt
    	  vector table
    	some DOS extenders place an API on this function, as it is not
    	  directly meaningful in protected mode
    	under DR DOS 5.0-6.0, this function does not use any of the
    	  DOS-internal stacks and may thus be called at any time; however,
    	  under Novell DOS 7.0 - DR-DOS 7.02, this function was not reentrant.
    	  Since 1998/05/29, DR-DOS 7.03 no longer uses any internal stacks and
    	  tests for this function much earlier, to allow a minimal stack usage
    	  of just two words in addition to the IRET frame, allowing it to be
    	  called from INT 21h functions, specificially device drivers.  This
    	  fixes the MCS SMB client
    Tommy

  4. #4
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 487
    Par défaut
    Citation Envoyé par tommy60 Voir le message
    Tu as raison, Obsidian. Il éxiste bien une interruption das l'API de MS-DOS permettant de le faire:
    Merci pour cette précision !

Discussions similaires

  1. [Debug] Désactiver une interruption
    Par Taname dans le forum Assembleur
    Réponses: 11
    Dernier message: 11/12/2006, 13h33
  2. Détournement d'une interruption
    Par Invité dans le forum Assembleur
    Réponses: 18
    Dernier message: 16/02/2005, 13h49
  3. Réponses: 14
    Dernier message: 14/12/2004, 14h45
  4. Réponses: 2
    Dernier message: 14/07/2004, 16h55
  5. Détourner une fonction pour copier un fichier en mémoire
    Par Rodrigue dans le forum C++Builder
    Réponses: 6
    Dernier message: 12/11/2003, 08h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo