svp est ce qu'il ya quelqu' un qui peut me donner un exemple sur un detournement d'interruption 20h en utilisant macro et routines ?
svp est ce qu'il ya quelqu' un qui peut me donner un exemple sur un detournement d'interruption 20h en utilisant macro et routines ?
L'interruption 20h était utilisée uniquement sur PC en assembleur x86 16 bits au tout début du temps du D.O.S. pour quitter un programme et a rapidement été remplacée par la fonction 4Ch de l'interruption 21h. Ça veut dire qu'avant même l'ère Windows, cette fonction était déjà obsolète.
Alors certes, c'est facile à détourner, mais je ne vois vraiment pas ce que cela peut t'apporter aujourd'hui, ni dans quel environnement tu comptes exploiter ce vecteur.
merci est ce que peux tu m'aider à corriger ce programme qui rederige une interruption 20h sur la routine NEW_routine de façon à ne pas terminer le programme lorsque l'instruction int 20h est roncontrée; je ne sait pas comment verifier cette detournement en plus l'utilisation des macros et les routine
redirect int : doit modifier lentree de vecteur interruption int20h par l'adresse de la routine NEW_ROUTINE
NEW_ROUTINE :routine gestion de la int 20h en plus appel routine success_detournement et routine detouenement
routine detouenement: donne le choix au utilisateur oubien confirmation de loperation d arret dexecution de programme en cours si oui il appel macro fin_propre sinon il appel routine affiche_msg puis fin_propre
routine affiche_msg : affiche 5 fois que prog va se fermer
macro fin_propre: restauration et mettre fin
j'ai essayé mais le programme ne marche pas
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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125 .model small .stack 100h .data v dw 5 message1 db 10,13,'programme va se fermer$' message2 db 'souhaitez vous vraiment fermer le programme? (o/n)' db 10,13,'$' num_int db "20h" message db 'le detournement est verifier' db 10,13,'$' affiche_msg proc debut: mov cx,v ; cx = v qui vaut 5 boucle : call ecrit_msg loop boucle ret ecrit_msg: mov ah,09h mov dx,offset message1 int 21h ret ret affiche_msg endp routine_detournement proc FAR push bp ; Sauve les registres modifiés ne ; servant pas de paramètres de sortie mov bp,sp ; BP + 8 pointe l'offset de retour push ax push dx Question: mov ah,9 ; Affiche "Terminer ?" lea dx,message2 int 21h mov ah,1 ; Attend réponse int 21h cmp al,'o' ; AL = 'o' ? jne Non? mov ah,0Dh ; Vider tampons disque internes du DOS int 21h stc ; CF = 1 mov word ptr [bp+8],offset Fin jmp short Retour_int20 ; Oui, retour Non?: cmp al,'n' ; Sinon, AL = 'n' ? jne Question ; Non, repose la question ; CF = 0 (égalité), demande éventuellement au DOS de continuer call affiche_msg Retour_int20: pop dx ; Restitue les registres (pile LIFO : pop ax ; Last Input, First Output) pop bp jnc Retour_DOS ; Retour au traitement du DOS add sp,6 ; Nettoie l'adresse de retour du DOS Retour_DOS: iret routine_detournement endp success_routine proc int 20h MOV AH,09H MOV DX,OFFSET Message INT 21H ret success_routine endp redirige_int macro num_int, new_routine push ds ; Sauve DS sur la pile push cs ; DS = CS pop ds ; car la routine fait partie du code lea dx,new_routine mov al,num_int mov ah,25h int 21h pop ds endm new_routine proc mov ah , 35h ;lire tableau d interruption mov al , 20h ; sauvgarder lit 20h int 21h push es ;contient ladresse push bx ;de linterruption call success_routine call routine_detournement ret new_routine endp .code main Proc mov ax,@data mov ds,ax redirige_int num_int, new_routine call new_routine Fin: mov ah,4ch int 21h
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager