Obligement - L'Amiga au maximum

Jeudi 28 mars 2024 - 19:20  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

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

Articles in english


Réseaux sociaux

Suivez-nous sur X




Liste des 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,
ALL


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


Galeries

Menu des galeries

BD d'Amiga Spécial
Caricatures Dudai
Caricatures Jet d'ail
Diagrammes de Jay Miner
Images insolites
Fin de jeux (de A à E)
Fin de Jeux (de F à O)
Fin de jeux (de P à Z)
Galerie de Mike Dafunk
Logos d'Obligement
Pubs pour matériels
Systèmes d'exploitation
Trombinoscope Alchimie 7
Vidéos


Téléchargement

Documents
Jeux
Logiciels
Magazines
Divers


Liens

Associations
Jeux
Logiciels
Matériel
Magazines et médias
Pages personnelles
Réparateurs
Revendeurs
Scène démo
Sites de téléchargement
Divers


Partenaires

Annuaire Amiga

Amedia Computer

Relec


A Propos

A propos d'Obligement

A Propos


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 au décalage 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]