Obligement - L'Amiga au maximum

Vendredi 17 août 2018 - 13:17  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

 · Accueil
 · A Propos
 · Articles
 · Galeries
 · Glossaire
 · Liens
 · Liste jeux Amiga
 · Quizz
 · Téléchargements
 · Trucs et astuces


Articles

 · Actualité (récente)
 · Actualité (archive)
 · Comparatifs
 · Dossiers
 · Entrevues
 · Matériel (tests)
 · Matériel (bidouilles)
 · Points de vue
 · En pratique
 · Programmation
 · Reportages
 · Tests de jeux
 · Tests de logiciels
 · Tests de compilations
 · Articles divers

 · Articles in english
 · Articles en d'autres langues


Twitter

Suivez-nous sur Twitter




Liens

 · Sites de téléchargements
 · Associations
 · Pages Personnelles
 · Matériel
 · Réparateurs
 · Revendeurs
 · Presse et médias
 · Programmation
 · Logiciels
 · Jeux
 · Scène démo
 · Divers


Jeux Amiga

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


Trucs et astuces

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


Glossaire

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


Partenaires

Annuaire Amiga

Amedia Computer

Relec

Hit Parade


Contact

David Brunet

Courriel

 


Programmation : Assembleur - Antivirus des Zeus Brothers
(Article écrit par Little Zeus et extrait d'Amiga News Tech - février 1990)


Comment, quoi, que vois-je ? Nos chers Zeus Brothers seraient-ils tombés malades ? Que leur arrive-t-il ? Ils nous avaient habitué à une programmation de qualité avec leur Tube-Intro et voilà qu'ils font preuve d'un manque de maturité flagrant en osant faire publier un antivirus qui, non content d'être lui-même un virus, ne guérira pas plus de 50% des disquettes infectées.

A ces mots, je vois les intéressés se lever, prêts à me balancer leur clavier en pleine figure. Bon, ils ont quand même droit à quelques explications. L'antivirus des Zeus Brothers est calqué sur le fonctionnement du SCA (Swiss Cracking Association), le plus primitif : il reprogramme les vecteurs CoolCapture et DoIO. C'est bien et ça empêchera facilement les trois-quarts des virus de se reproduire (je ne me contredis pas, seule la moitié sera réellement tuée) mais reste l'autre quart. Énumérons quelques-uns de ces phénomènes :
  • Le Byte Bandit est l'exemple même du virus étanche aux remontrances des Zeus Brothers : il ne reprogramme ni le CoolCapture, ni le DoIO général. Il s'attaque à l'interruption de niveau 5, au vecteur DoIO propre au trackdisk.device et enfin, installe une structure résidente. Ici, je sens que le public néophyte commence à se demander quel langage je parle. Ne vous en faites pas, je m'expliquerai sur ces points sombres un peu plus tard.

  • Le Byte Warrior (ou DASA) est en fait un antivirus... qui plante l'ordinateur. Après le traitement à la sauce Zeus Brothers, il ne pourra certes plus se reproduire, mais ses effets pernicieux demeureront : lui aussi installe une structure résidente, et de plus, il affecte les vecteurs CoolCapture et ColdCapture (patience, les excités du clavier, je vais venir aux explications).

  • L'IRQ est un cas à part : il ne s'installe pas sur le bloc d'amorce mais se greffe sur les fichiers exécutables de votre disquette. Je sais peu de choses sur son mode de fonctionnement sauf que lui aussi fonctionne avec une interruption (IRQ signifie Interrupt Request).
C'est parti pour le cours de L.M.

Ça suffit pour les exemples. Les maniaques de l'assembleur sont-ils toujours à leur poste ? Oui ? OK.

C'est parti pour le voyage à l'intérieur de l'Amiga. A titre de renseignement, toutes les explications que je vais donner sont largement inspirées d'un certain livre de 639 pages qui devrait être le nouveau testament pour nous tous !

Je passerai sur le vecteur DoIO général. Il est assez expliqué dans les colonnes de la Zeus-saga. Je signalerai cependant l'existence d'un vecteur DoIO propre à chaque périphérique logique. On le trouve à l'offset négatif -28 de la structure Device. J'ajouterai à l'existence d'un vecteur CoolCapture celle d'un vecteur ColdCapture à l'adresse Execbase +42. Son fonctionnement diffère un peu de celui de CoolCapture. En effet, il n'y est pas permis d'utiliser le pointeur de pile (SP) et par conséquent, la routine ne peut pas se terminer par un RTS (les instructions JSR, BSR et RTS utilisant le pile). On la termine donc avec un JMP (A5).

Les structures résidentes se trouvent un peu partout en mémoire. Elles sont trouvées à l'initialisation par le premier mot suivi du premier long mot (cfr infra) et leur code est exécuté selon le mode de fonctionnement de la structure. En voici la forme :

Taille Nom Rôle
Word MatchWord $AFC pour que le système reconnaisse ici une structure résidente
Long MatchTag Pointeur sur l'adresse 0 de la structure.
Pour que le système vérifie qu'on ait ici une structure résidente
Long EndSkip Pointeur sur la fin de la structure
Byte Flags Détermine le mode de fonctionnement de la structure :
est-elle présente pour créer une bibliothèque ou pour activer une routine ?
Byte Version
Byte Type
Long Name Pointeur sur le nom de la structure
Long IDString Pointeur sur les commentaires de la structure
Long Init Pointeur sur la routine à exécuter

L'alternative

Le programme que je propose dispose d'assez de commentaires pour être compris. Je tiens à signaler qu'il ne tue pas les virus présents sur le bloc d'amorce. Il ne fait que les tuer en mémoire. Si vous désirez "nettoyer" le bloc d'amorce, le mieux (et le plus simple) est encore d'utiliser la commande "install df0:" du CLI.

PS : A la dernière minute, j'ai remarqué qu'il restait un bogue dans la version du programme ci-joint : il détecte et tue en effet une structure résidente appartenant au système. Cela ne provoque apparemment pas de problèmes de fonctionnement, mais le message d'avertissement est affiché à chaque fois que le programme est appelé.

assembleur
assembleur


[Retour en haut] / [Retour aux articles]