Pam∞¥ov∞ rezidentnφ viry - Win32P°esm∞rovßnφ adres funkcφ na t∞lo viruKa₧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 Ring3DalÜφ 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. |
||