odczytu dowolnego pliku sprawdzać, czy jest to plik zainfekowany i w locie leczyć go w pamięci, nie zmieniając jednak jego obrazu na dysku...

Jak cię złapią, to znaczy, że oszukiwałeś. Jak nie, to znaczy, że posłużyłeś się odpowiednią taktyką.
W efekcie program odczytujący
plik widzi jego oryginalną zawartość, zaś fizycznie plik nie jest zmieniany. Napisanie
procedury stosującej powyższą metodę nie jest już jednak zadaniem tak łatwym, jak w
poprzednim przypadku; należy rozważyć kilka możliwości związanych z położeniem
wskaźnika zapisu/odczytu w stosunku do początku pliku. Aby uprościć to zadanie,
często stosuje się zabieg polegający na tym, że przy otwieraniu zainfekowanego pliku
zmniejsza się w wewnętrznych strukturach DOS (tablica SFT, opisana poniżej) jego
długość o rozmiar wirusa. Wtedy, jedynym obszarem pliku, którym musi zająć się wirus,
jest jego początek (np. w przypadku nagłówka plików EXE wirus powinien przywracać
jego prawdziwą zawartość), gdyż operacje odczytu nigdy nie dojdą do dodanego na
końcu pliku wirusa.
Przy programowaniu wirusa wykorzystującego technikę stealth często przydatne są
dwie wewnętrzne funkcje DOS (1216/1220/2F), służące do operowania na
wewnętrznych strukturach DOS, tzw. tablicach SFT (ang. System File Table),
zawierających wszelkie informacje o otwartym pliku. W systemie może istnieć kilka
podtablic SFT, połączonych w łańcuch. Dostęp do zawartych w nich informacji o pliku
uzyskuje się na podstawie uchwytu pliku zwracanego przez funkcje (3D,6C/21) przy
jego otwieraniu. Uchwyt ten podaje się jako parametr funkcji (1216/1220/2F). Po ich
użyciu najpierw uzyskujemy adres tzw. tablicy JFT (ang. Job File Table), opisującej pliki
otwarte w danym procesie. Na jej podstawie otrzymujemy adres tablicy SFT opisującej
dany plik. Używa się do tego poniższej sekwencji:
; Uzyskiwanie informacji o pliku na podstawie jego uchwytu
MOV AX,1220h ; weč adres tablicy JFT zawieraj╣cej numer SFT,
; opisuj╣cej plik podany w BX
MOV BX,UchwytPliku ; BX zawiera uchwyt (numer) pliku
INT 2Fh ; wywo│aj funkcjŕ
MOV BL,ES:[DI] ; weč numer tablicy SFT
MOV AX,1216h ; weč adres tablicy SFT na podstawie numeru w BL
INT 2Fh ; wywo│aj funkcjŕ ES:DI wskazuje na tablicŕ SFT pliku

Jak widać, infekowanie pliku jest możliwe nawet przy jego zamykaniu. Format podtablicy
SFT podano poniżej:
Format podtablicy SFT Adres Zawartość
00-03
Wskaźnik do następnej podtablicy
04
N - liczba plików w podtablicy
06-40


Opis pliku nr 1 w podtablicy - patrz następna tablica

Opis pliku nr N w podtablicy

Opis pliku zawarty w tablicy SFT
Adres
Zawartość
00-01
Liczba łączników do pliku
02-03
Tryb
04
Atrybut pliku
05-06
Informacja o pliku
07-0A
Wskaźnik do nagłówka programu obsługi lub do bloku DPB
0B-0C
Pierwsza JAP pliku
0D-0E
Czas ostatniej modyfikacji pliku
0F-11
Data ostatniej modyfikacji pliku
11-14
Rozmiar pliku
15-18
Aktualna pozycja wskaźnika odczytu/zapisu pliku
19-1A
Względny numer JAP
1B-1E
Położenie elementu katalogu opisującego plik
20-2A
Nazwa i rozszerzenie pliku
2B-2E
Wskaźnik do poprzedniego elementu SFT (pole programu SHARE)
2F-30
Numer komputera w sieci (pole programu SHARE)
31-32
Adres właściciela pliku (jego PSP)
33-34
Położenie w obszarze roboczym listy zablokowanych regionów pliku
(pole programu SHARE)
35-36
Numer JAP
37-3A
Wskaźnik do IFS pliku lub 00000000h

Zamieszczony poniżej wirus stosuje technikę senii-stealth w odniesieniu do polecenia
DIR i popularnych nakładek oraz full stealth oparty na tablicach SFT.

;----------------------------------------------------------------------------;
; ;
; Czesc ksiazki : "Nowoczesne techniki wirusowe i antywirusowe" ;
; ;
; KOMB_STE v1.0, Autor : Adam Blaszczyk 1997 ;
; ;
; Zmodyfikowany wirus KOMBAJN, rozszerzony o technike STEALTH ;
; ;
;----------------------------------------------------------------------------;
Wątki
Powered by wordpress | Theme: simpletex | © Jak cię złapią, to znaczy, że oszukiwałeś. Jak nie, to znaczy, że posłużyłeś się odpowiednią taktyką.