Accueil > Forum > > > > interruption
interruption
mercredi 21 décembre 2011 à 01:31:22 |
interruption

yosrasouaifi
|
slt svp comment tester detournement d interruption 20h?
|
|
mercredi 21 décembre 2011 à 22:40:48 |
Re : interruption

ghuysmans99
|
Tu ne peux pas l'appeler car cela tuera ton programme, tu dois donc positionner un indicateur quelque part en mémoire ou ajouter une fonction à l'int 21h (ou à une autre) tout en redirigeant la 20h.
VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
|
|
vendredi 23 décembre 2011 à 22:18:56 |
Re : interruption
|
samedi 24 décembre 2011 à 01:03:52 |
Re : interruption

ghuysmans99
|
Réponse acceptée !
Pour faire simple : si tu l'appelles et qu'elle n'est pas détournée, ton programme est stoppé. Tu dois donc faire autrement : un indicateur quelque part en mémoire (risqué !) ou tout simplement une fonction que tu ajoutes à l'int 21h (quand tu l'appelles, elle positionne un registre à une valeur convenue)
VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
|
|
lundi 26 décembre 2011 à 00:12:04 |
Re : interruption

yosrasouaifi
|
merci
svp est ce que tu peux me donner un exemple sur un detournement d'interruption ???
|
|
lundi 26 décembre 2011 à 01:04:11 |
Re : interruption

ghuysmans99
|
Réponse acceptée !
La table des vecteurs d'interruptions se trouve en 0:0. Il faut un segment et un offset pour représenter une adresse, ce qui fait 4 octets par interrupt. Tu veux accéder à l'int 21h -> le vecteur se trouve en 21h*4. Le 8086 est little-endian donc le poids faible de l'adresse (l'offset) est le premier. Voilà comment écraser un vecteur d'interrupt.
Pour ajouter un service (=fonction) à une interruption, il faut d'abord stocker le vecteur précédent quelque part en mémoire pour pouvoir l'appeler si notre fonction n'est pas demandée. Dans le gestionnaire, compare le n° de fonction avec celle que tu veux détourner. Si ce n'est pas la bonne, appelle l'ancien gestionnaire en empilant seg puis ofs et en faisant un retf. Fais bien attention de conserver les flags dans ton gestionnaire d'interrupt.
VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
|
|
mardi 27 décembre 2011 à 21:38:20 |
Re : interruption

yosrasouaifi
|
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
.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
|
|
mardi 27 décembre 2011 à 22:18:14 |
Re : interruption

ghuysmans99
|
Réponse acceptée !
Ton programme serait beaucoup plus facilement déboguable s'il était indenté et organisé par sous-fonctions bien délimitées. De plus, faire une macro et ne l'utiliser qu'une fois ne fait que nuire à la lisibilité. Si déjà ton segment de code commençait au bon endroit ... Là ça ressemble plus à un plat de nouilles qu'à un bout de programme. Rectifie déjà ça, on verra après.
VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
|
|
mardi 27 décembre 2011 à 22:28:34 |
Re : interruption

ghuysmans99
|
Réponse acceptée !
Encore autre chose : le push bp/mov bp,sp est inutile. Pas besoin de stackframe à cet endroit.
"je ne sait pas comment verifier cette detournement " cf. 1è réponse acceptée. Je n'ai pas spécialement envie de te filer un code tout fait, par contre je peux te donner la façon de faire (détournement de l'int 21h, cf. 2è réponse acceptée).
Du point de vue du programme qui fait le test, il lui suffit d'appeler ta fonction de test dans l'int 21h et de voir si AX a pris la bonne valeur (pour le même prix, ça peut être un autre reg ou un flag).
VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
|
|
Cette discussion est classée dans : interruption
Répondre à ce message
Sujets en rapport avec ce message
Interruption Bios ou Dos ? [ par Valmont ]
Quand choisir d'utiliser une int Dos plutot que Bios et inversement qd il y a + ou - doublon, comme par ex. pour la lecture/ecriture de secteur sur un
interruption du bios et du dos sous windows [ par eedy31 ]
eedy31Salut a tous est ce que quelqu'un pourait m'aider car je ne sais pascomment faire pour utiliser les interruption du dos et du bios sous windows!
probleme avec l interruption affichage de chaine [ par M0NTOYA ]
bon voila mon probleme ,qd j utilse cette procedure(presentation) pour afficher une chaine de caractere presentation PROC PUSHA MOV AH,09h INT 21h POP
probleme avec l interruption affichage de chaine [ par M0NTOYA ]
bon voila mon probleme ,qd j utilse cette procedure(presentation) pour afficher une chaine de caractere presentation PROC PUSHA MOV AH,09h INT 21h POP
interruption BIOS [ par project0 ]
est ce quelqu un connais les interruptions BIOS qui arrete le systeme ( avec mise sous tension ) et celle qui permet un reboot ( redemarrage propre pa
interruption clavier nasm [ par escobales ]
Bonjour,Je n'arrive pas à appeler l'interrruption clavier avec nasmj'ai ecrit un programme en C mais j'ai besoin d'utiliser le clavier pendant que le
retour d'interruption [ par S2R ]
Bonjour,Je n'arrive pas à récupérer l'adresse d'appel d'une int.J'aurais besoin de pouvoir changer l'adresse de retour d'une int (que j'ai reprogrammé
interruption du clavier sous linux [ par xian2 ]
bonjour,je voudrais connaitre l'equivalent de l'interruption 6 du int 21h du DOS.elle permet de lire le clavier sans afficher le caractère lu.mon co
Probleme de clic !!!! [ par mgorillaz ]
Bonjour je suis debutant en assembleur et je dois faire une calculatrice mais sous certaine conndition et je n'arrive pas du tout a gerer mes clics !!
progr.pic interruption [ par julien__68 ]
bonjours a tous, j'utilise un pic18f4620, je débute dans la programmation, je voulai réaliser une interruption sur rb0 , si quelqu'un pouvai me dire
Livres en rapport
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|