Pam∞¥ov∞ rezidentnφ viry - Win32
Zde jsou uvedeny n∞kterΘ metody:
P°esm∞rovßnφ adres funkcφ na t∞lo viru
Ka₧d² spustiteln² program ve Windows 9x pou₧φvß nejmΘn∞ dv∞ zßkladnφ volßnφ API jßdra systΘmu.
Jsou to funkce GetModuleHandleA a GetProcAddress. Odkazy na tyto funkce jsou ulo₧eny v pe-programu,
v tzv. tabulkßch importu ve Windows. Anal²zou tΘto tabulky m∙₧e virus zjistit dalÜφ vstupnφ body do jßdra
Windows a potom je vyu₧φvat pro svou replikaci (mno₧enφ). Tento p°φstup mß takΘ dalÜφ v²hody, virus je
nap°. p°enositeln² i pod operaΦnφ systΘm Windows NT.
Zatφmco v prost°edφ MS-DOS pou₧ije virus p°i otevφrßnφ souboru vyvolßnφ p°eruÜenφ INT 21 s p°φsluÜn²mi
parametry v registrech procesoru, v prost°edφ Windows ulo₧φ tyto parametry do zßsobnφku a skoΦφ na p°φsluÜnou
funkci API. Proto₧e tyto funkce jsou samoz°ejm∞ externφ a jsou souΦßstφ knihoven DLL operaΦnφho systΘmu,
je t°eba n∞jak zjistit adresu danΘ funkce API. U normßlnφch aplikacφ je tento proces ·kolem zavad∞Φe, kter²
danou aplikaci spouÜtφ. Ten potom zjistφ z informacφ zapsan²ch v pe-souboru, kterΘ knihovny DLL a kterΘ jejich
funkce jsou aplikacφ volßny, a korektn∞ upravφ na p°φsluÜn²ch mφstech adresovΘ odkazy na tyto funkce.
Pokud vÜak virus bude chtφt vyu₧φt t∞chto automatick²ch relokacφ, nezb²vß mu, ne₧ se pustit do nßroΦn∞jÜφch
modifikacφ pe-souboru a zejmΘna jeho relokaΦnφ sekce. I zde se vÜak nabφzφ urΦitΘ zjednoduÜenφ. P°i startu
Windows 9x jsou toti₧ hlavnφ moduly API, jako je nap°. modul KERNEL32.DLL, natahovßny do pam∞ti na stßle
stejnΘ mφsto. Pokud si tedy, nap°. krokovßnφm klasicky p°elo₧enΘho programu, zjistφme adresy t∞chto funkcφ,
m∙₧eme potom zjiÜt∞nΘ vstupnφ body vyu₧φt p°φmo bez vyu₧itφ importovacφho mechanismu a slo₧itΘho
zpracovßnφ struktur pe-souboru. tento zp∙sob mß i svß ·skalφ. Budete-li takto koncipovan² virus chtφt p°enΘst
nap°. z operaΦnφho systΘmu Windows 9x do systΘmu Windows NT, dojde samoz°ejm∞ k havßrii, proto₧e pod
Windows NT se nebudou p°φsluÜnΘ funkce vyskytovat na stejn²ch adresßch jako ve Windows 9x. TakΘ novΘ
verze systΘmu by mohly podobn∞ napsan²m vir∙m znep°φjemnit ₧ivot.
Nev²hodou je, ₧e ukonΦenφm infikovanΘho programu ztrßcφ virus mo₧nost kontroly nad operaΦnφm systΘmem.
Nev²hodu lze vyvß₧it napadenφm frekventovan∞ volan²ch systΘmov²ch knihoven, zejmΘna KERNEL32.DLL a USER32.DLL.
Ring0 a Ring3
DalÜφ prvek, na kterΘm jsou Windows z velkΘ Φßsti postaveny, jsou takzvanΘ virtußlnφ ovladaΦe za°φzenφ - VxD.
Jejich k≤dy pracujφ na nejvyÜÜφ ·rovni oprßvn∞nφ procesoru zvanΘm ring 0 a mohou si s cel²m systΘmem d∞lat
doslova, co cht∞jφ bez jak²chkoliv ochran. Pro viry, kterΘ cht∞jφ monitorovat souborov² systΘm Windows 9x,
je vyu₧itφ ovladaΦ∙ VxD velice p°φnosnΘ. Na tΘto ·rovni toti₧ pracuje ovladaΦ IFS manager (IFS - installable
file system), p°es kter² prochßzφ veÜkerΘ souborovΘ operace Windows 9x, a¥ u₧ jsou volßny ze 16bitovΘ Φi
32bitovΘ aplikace Windows nebo z virtußlnφho stroje MS-DOSu. Navφc zde existuje velice podrobn∞
dokumentovanΘ rozhranφ API, kterΘ mohou tv∙rci vir∙ vyu₧φt. Tato mo₧nost je takΘ pro virus velice v²hodnß,
proto₧e na ·rovni ovladaΦ∙ VxD je takov² virus schopen ·sp∞Ün∞ se ukr²vat p°ed antivirov²mi programy.
Tuto v²hodu se samoz°ejm∞ modernφ 32bitovΘ viry nauΦily rychle vyu₧φvat. Po "zav∞Üenφ" do rozhranφ IFS
manageru je virus schopen lehce monitorovat veÜkerΘ souborovΘ operace systΘmu a dßle se takto rozÜφ°ovat.
Tato metoda funguje pouze ve Windows 9x, nikoliv ve Windows NT, 2000.