Asssembleur
funinformatique
Messages postés
3
Statut
Membre
-
funinformatique Messages postés 3 Statut Membre -
funinformatique Messages postés 3 Statut Membre -
slt tous le monde , j'ai devlopé ce code en assembleur , qui a pour role , de detourné la int 20h vers une autre routine
et je sais pas prk
ca marche pas
aidé moi a le corrigé et merci
title tp_2
.model small
.stack 100h
.data
msg db "suucess detournement 20h $"
msg1 db "pour continuer tapez 1 , pour terminer tapez 0 $"
msg2 db "le programme va se terminer $"
redirect_int proc
push ds
mov ax,cs
mov ds,ax
mov dx,offset new_routine
mov ah,25h
mov al,20h
int 21h
pop ds
int 20h
redirect_int endp
new_routine proc
call success_detournement msg
call routine_detournement msg1
new_routine endp
success_detournement proc
mov ah,9
mov dx,offset msg
int 21h
endm success_detournement
routine_detournement proc
adr3:
mov ah,9
mov dx,offset msg1
int 21h
mov ah,1
int 21h
cmp al,'1'
je adr1
jne adr2
adr1:
call afficher_msg msg2
adr2:
cmp al,'0'
je adr4
jne adr3
adr4:
call fin_propre
routine_detournement endp
afficher_msg proc
mov cx,5
boucle:
mov ah,9
mov dx,offset msg2
int 21h
loop boucle
afficher_msg endp
fin_propre proc
pop ds
pop dx
mov ah,25h
mov al,20h
int 21h
fin_propre endp
.code
main proc
mov ax,@data
mov ds, ax
mov ah ,35h
mov al,20h
int 21h
push bx
push es
call redirect_int
endp main
end
et je sais pas prk
ca marche pas
aidé moi a le corrigé et merci
title tp_2
.model small
.stack 100h
.data
msg db "suucess detournement 20h $"
msg1 db "pour continuer tapez 1 , pour terminer tapez 0 $"
msg2 db "le programme va se terminer $"
redirect_int proc
push ds
mov ax,cs
mov ds,ax
mov dx,offset new_routine
mov ah,25h
mov al,20h
int 21h
pop ds
int 20h
redirect_int endp
new_routine proc
call success_detournement msg
call routine_detournement msg1
new_routine endp
success_detournement proc
mov ah,9
mov dx,offset msg
int 21h
endm success_detournement
routine_detournement proc
adr3:
mov ah,9
mov dx,offset msg1
int 21h
mov ah,1
int 21h
cmp al,'1'
je adr1
jne adr2
adr1:
call afficher_msg msg2
adr2:
cmp al,'0'
je adr4
jne adr3
adr4:
call fin_propre
routine_detournement endp
afficher_msg proc
mov cx,5
boucle:
mov ah,9
mov dx,offset msg2
int 21h
loop boucle
afficher_msg endp
fin_propre proc
pop ds
pop dx
mov ah,25h
mov al,20h
int 21h
fin_propre endp
.code
main proc
mov ax,@data
mov ds, ax
mov ah ,35h
mov al,20h
int 21h
push bx
push es
call redirect_int
endp main
end
3 réponses
Et à quel endroit ça bloque ?
Est-ce que le détournement lui-même fonctionne ?
Il y a quelques problèmes au niveau de la manière de coder dans 'routine_detournement', et surtout un gros soucis sur le rétablissement de l'interruption d'origine, car tu sauvegarde BX et ES sur la pile, et tu veux les dépiler à la suite de plusieurs Call, donc en fait tu dépiles les adresses de retour des Call au lieu des valeurs souhaitées.
Pour y palier, il suffit de les sauvegarder dans des variables...
Le chêne aussi était un gland, avant d'être un chêne
Est-ce que le détournement lui-même fonctionne ?
Il y a quelques problèmes au niveau de la manière de coder dans 'routine_detournement', et surtout un gros soucis sur le rétablissement de l'interruption d'origine, car tu sauvegarde BX et ES sur la pile, et tu veux les dépiler à la suite de plusieurs Call, donc en fait tu dépiles les adresses de retour des Call au lieu des valeurs souhaitées.
Pour y palier, il suffit de les sauvegarder dans des variables...
Le chêne aussi était un gland, avant d'être un chêne