Suivez-nous sur X
|
|
|
0,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T,
U,
V,
W,
X,
Y,
Z,
ALL
|
|
0,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T,
U,
V,
W,
X,
Y,
Z
|
|
0,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T,
U,
V,
W,
X,
Y,
Z
|
|
A propos d'Obligement
|
|
David Brunet
|
|
|
|
Programmation : Assembleur - désassemblage du virus Byte Bandit
(Article écrit par Éric Chauvel et extrait d'A-News (Amiga News) - mai 1989)
|
|
Voici le virus Byte Bandit désassemblé avec quelques explications.
Vérifie la présence du virus dans la mémoire de l'Amiga en comparant la valeur du pointeur sur le programme d'interruption raster
(interruption libérée au passage de la ligne raster 0).
Transfert de tout le programme.
Saut dans le programme qui vient d'être transféré.
Et on continue ici dans le programme transféré.
Fin du programme.
Création d'un tampon de 1024 octets.
Chercher pointeur sur noeud trackdisk.device.
D0 contient un pointeur sur le noeud trackdisk.device de la device.list.
Pointeur sur la table de saut de trackdisk.device.
Sauvegarde ancien pointeur sur BEGIN_IO.
Et mise en place du nouveau pointeur (détournement du programme original pour aller exécuter la partie de programme en
$C3188(PC)).
Sauvegarde pointeur sur le programme d'interruption à exécuter lors d'une interruption raster.
Et mise en place du nouveau pointeur (détournement du programme original pour aller exécuter la partie du programme en
$C32CA(PC)).
Initialisation d'une structure résidente qui permet l'exécution d'un programme lors d'une réinitialisation.
Tableau de pointeur sur structure résidente.
Adresse structure résidente dans tableau de pointeur.
Marque de fin du tableau de pointeur.
Kicktagptr (pointeur sur une table résidente).
Pointeur sur le programme à exécuter lors d'une réinitialisation soit C3388(PC).
Partie du programme détournée et exécutée à chaque utilisation du trackdisk.device, soit sendio ou DOIO. A1 pointe sur un IO_REQUEST.
Donc chaque fois que vous entrez une disquette dans le lecteur, vous aurez une copie du virus sur celle-ci.
Transfère les 512 premiers octets du programme.
Transfère de tout le programme dans les 1024 octets du tampon mémoire.
Calcul des sommes de contrôle du programme.
Test le nombre d'opération I/O (entrée/sortie).
Augmente le nombre qui indique combien il y a de copie du virus.
Récupère ancien pointeur sur BEGIN_IO.
Partie du programme détournée et exécutée à chaque interruption du raster.
Récupère ancien pointeur sur programme d'interruption raster.
Simulation d'un plantage. On en sort en appuyant successivement sur les touches "Alt Gauche", "Amiga Gauche", "Espace",
"Amiga Droite", "Alt Droite".
Pointeur sur un tableau de codes touches clavier (codes des touches).
Lecture du clavier.
Compare touche entrée au clavier avec le contenu du tableau de code clavier.
Activer le DMA du plans de bits.
Partie de programme exécutée lors d'une réinitialisation.
Indique qu'il y a plus de deux réinitialisations.
|