Igiho stránka o virech
Novinky
Kniha o virech
1.Pomoc
Testy
Odkazy
Download
AV-Konference
Akce
Autor

Zjištění adresy viru v paměti

Narozdíl od boot virů, které mají jistotu, že jejich spuštění bude realizováno vždy v paměti od adresy adresy 0000:7c00, musí viry souborové svoji aktuální pozici v paměti zjišťovat. Segmentová část adresy je určena segmentem vlastního kódu (CS), offsetová část adresy pak trikem pomocí instrukce call, která ukládá na zásobník návratovou adresu (t.j. adresu následující instrukce programu).

	call trik			; skok na nasledujici instrukci
trik:
	pop bp			; ziskava adresu teto instrukce
	sub bp, offset trik	; korekce na originalni posun

Od tohoto okamžiku virus zná svoji pozici v paměti, což je využíváno kódem viru zejména při práci s proměnnými, resp. při jejich adresování (použití registru BP je samozřejmě jednou z možných variant).
Dále pak lze v těle viru nalézt odkazy podobného typu, jako zde následující uvedené příklady načtení offsetu proměnné či načtení obsahu adresy definované proměnnou.

  • Konstrukce mov dx, offset proměnná:
    	lea dx, [bp+offset promenna]
    
    resp.
    	lea dx, [bp+promenna]
    
  • Konstrukce mov dx, word ptr proměnná:
    	mov dx, word ptr [bp+offset promenna]
    
    resp.
    	mov dx, word ptr [bp+promenna]
    

    Zpět