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

Assembleur Discussion :

Détournement d'une interruption


Sujet :

Assembleur

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2011
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Détournement d'une interruption
    je veux créer un programme rederigeant l'interruption 20h sur une routine, de façon à ne pas terminer le programme en cours meme lorsque l'interruption 20h est declenchée,la nouvelle routine de gestion de l'interruption 20h se doit d'afficher à l'utilisateure un message lui informant du succés de detournement de l'interruption 20h,elle permet aussi de déclencher une routine qu'on se propose de développer et eventuellement de mettre fin 'proprement 'au programme .
    voici le code mais lors de l'exécution le programme il ne marche pas correctement .pouvez vous m'aider svp?


    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    name " mini_projet_22"
     
     org 100h 
     
    data :
    msg1 db  0Dh,0Ah,  " programme va se fermer$"
    msg2 db  0dh,0ah,  "entrer A si votre choix est d'arreter le programme ou N sinon$" 
    msg3 db  0dh,0ah,  "succes du detournement$"
    OldInt20hOffset  dw 0000h
    OldInt20hSegment dw 0000h 
     
    code :
     
     afficher_msg macro (msg1)
        mov cx,5
        ecrire: 
        mov dx, offset msg1
        mov ah, 9
        int 21h
        loop ecrire  
     afficher_msg endm 
     
     
     
     
      routine_deroutement macro (msg2) 
        mov ah,9
        mov dx,offset msg2
        int 21h
        mov ah,1
        int 21h 
        cmp al,'a'
        je fin
        jne non_fin
        fin:
        fin_propre
        non_fin:
        afficher_msg msg1
        fin_propre  
      routine_deroutement endm  
     
     
     
     
     redirect_int macro
        mov ah, 35h
        mov al, 20h
        int 21h
        mov OldInt20hOffset, bx
        mov OldInt20hSegment, es 
        push    ds                      
        push    cs                     
        pop     ds  
        mov ah, 25h
        mov al, 20h
        int 21h
        push cs   
        pop  ds
     redirect_int endm 
     
     
     
           push ds
        mov ah, 25h
        mov al, 20h
        mov dx,offsetnew_routine
        int 21h  
     
     
     
     fin_propre macro (oldint20hoffset,oldint20hsegment)
        mov ah, 25h
        mov al, 20h
        mov bx, OldInt20hOffset    
        mov es, OldInt20hSegment  
     
     int 20h
    fin_prope endm 
     
     
     
     
     success_detournement macro (msg3)
        mov ah,9
        mov dx offset msg3
        int 21h
     success_detournement endm  
     
     
     new_routine macro 
        success_detournement msg3
        routine_detournement msg2
     new_routine endm
     
     
    main proc 
     
     redirect_int

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 369
    Points : 23 623
    Points
    23 623
    Par défaut
    Juste quelque questions :

    • Que se passe-t-il si tu rends la main à un programme qui a lui-même appelé l'INT 20h et qui, par conséquent, ne s'attend pas à être encore en vie ?
    • Quid de l'interruption 21h, fonction 4Ch ?
    • Dans la macro « fin_propre », tu appelles encore INT 20h ?

Discussions similaires

  1. Rediriger une interruption
    Par beraaa dans le forum x86 16-bits
    Réponses: 3
    Dernier message: 31/12/2007, 06h16
  2. Réponses: 2
    Dernier message: 13/12/2006, 17h40
  3. [Debug] Désactiver une interruption
    Par Taname dans le forum Assembleur
    Réponses: 11
    Dernier message: 11/12/2006, 13h33
  4. Détournement d'une interruption
    Par Invité dans le forum Assembleur
    Réponses: 18
    Dernier message: 16/02/2005, 13h49
  5. Réponses: 2
    Dernier message: 14/07/2004, 16h55

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