Windows - Windows Antivirus API

Akik vírusirtó szoftverek fejlesztésére adják a fejüket, feltétlenül tisztában kell lenniük azzal, hogy mi a Windows Antivirus API gyűjteménye. Mire használható? Milyen céllal készült? Milyen függvényeket ismer? Egyáltalán mi szükség van az operációs rendszer támogatására egy vírusirtó szoftver megírásában. Az alábbiakban mindezen kérdésekre választ adunk.
Az Antivirus API egy szabványos Windows API (Application Programming Interface) függvény gyűjtemény, mely elősegíti, hogy a szoftverfejlesztők vírusirtó alkalmazásokat készítsenek. Tulajdonképpen nem arról van szó, hogy egy merevlemezen tárolt fájlt egy külső programmal ellenőrzünk, hanem arról, hogy valós időben például egy Office dokumentum megnyitása előtt ellenőrizzük a megnyitandó tartalmat, szükség esetén közbeavatkozzunk és csak ezután adjuk át a Word-nek vagy az Excel-nek az állományt. Így lehetőség nyílik a dokumentumokba rejtett makróvírusok kiszűrésére. Az Office dokumentumokon kívül támogatja a Windows az Internet Explorer-ben futó ActiveX komponensek ellenőrzését és a futásidejű komponens telepítéseket is.
Az antivírus összetevők tulajdonképpen egy ActiveX-ben találhatók, melyet használat előtt regisztrálni kell az adott gépen. A benne lévő függvények az MSOfficeAntiVirus kategóriába tartoznak (az összetartozó Component Object Model (COM) osztályok kerülnek csoportosításra közös azonosítóval (ID és CATID)). Felhasználói interfésszel nem rendelkezik, csak programozás technikai eszközökkel érhető el.
Az Office alkalmazások is támogatják a vírusirtó modulok működését, például egy Word dokumentum megnyitásánál a splash képernyő, illetve a betöltődési folyamatjelző (progress bar) aktivizálódásakor van lehetőség külső közbeavatkozásra. A Norton AntiVirus használatakor rövid időre láthatunk az állapotsoron egy vírus ellenőrzésre utaló feliratot.
Megjegyzések
A szoftverfejlesztőknek mindenképpen figyelembe kell venniük a következőket:
  • Ha a háttértárolón lévő fájlok megnyitása OLE Automation funkcióval történik, akkor fontos szempont, hogy a megnyitási művelet nem ad vissza futás időben hibajelzést.
  • Az irtó szoftver eltávolításakor fontos, hogy eltávolítsuk a MSOfficeAntiVirus CATID regisztráció adatbázisbeli bejegyzéseit. Amennyiben ez nem történik meg, az Office és az Internet Explorer minden alkalommal megpróbálja felvenni a kapcsolatot a vírusirtó alkalmazással.
  • Ha digitálisan aláírt fájlból távolítunk el vírust, eltávolítjuk a digitális aláírást is.
  • Amennyiben egy Weboldalon lévő dokumentumban találunk és távolítunk el vírust, csak a helyi átmeneti állományában tesszük és nem a tényleges fájlban. A szerveren továbbra is megmarad a fertőzés.
Interfészek, metódusok
Az Antivirus API és a programok között a IOfficeAntiVirus interfész teremt kapcsolatot. Használatához minimálisan Windows 95-re van szükség. Egyetlen metódussal rendelkezik, melynek "Scan" a neve és a következő szintaxis figyelembevételével aktiválható:
HRESULT Scan(MSOAVINFO* pmsoavinfo);
A "pmsoavinfo" paraméter egy "MSOAVINFO" struktúra címe, mely az ellenőrizendő állományról tartalmaz részleteket (lásd lejjebb). Visszatérési értékek a következők lehetnek:
  • S_OK = ellenőrzés lezajlott, nincs vírus
  • S_FALSE = volt vírus, de el lett távolítva
  • E_FAIL = volt vírus és nem lett eltávolítva
  • ERROR_FILE_NOT_FOUND = nincs meg a fájl.
Az "MSOAVINFO" struktúrát így lehet definiálni:
typedef struct _msoavinfo {
    int  cbSize;
    struct {
        ULONG  fPath:1;
        ULONG  fReadOnlyRequest:1;
        ULONG  fInstalled:1;
        ULONG  fHttpDownload:1;
    };
    HWND  hwnd;
    union {
        WCHAR  *pwzFullPath;
        LPSTORAGE  lpStg;
    } u;
    WCHAR  *pwzHostName;
    WCHAR  *szIconPath;
} MSOAVINFO;
Ahol a következő paraméterek találhatók:
  • cdSize = a struktúra mérete.
  • fPath = meghatározza, hogy miként kerül felhasználásra a pwzFullPath vagy lpStg paraméter. Ha értéke TRUE, akkor a pwzFullPath használandó, különben az lpStg.
  • fReadOnlyRequest = ha értéke TRUE, akkor a vírusellenőrzésre megnyitott fájl csak olvasható.
  • fInstalled = ha értéke TRUE, akkor a pwzFullPath-ban megadott fájl telepített állomány.
  • fHttpDowload = ha értéke TRUE, akkor az ellenőrzés alatt álló állomány egy Interneten lévő fájl helyi átmeneti másolata.
  • hwnd = ebben az Office szülőablakban történik az ellenőrzés.
  • U pwzFullPath = az aktuálisan ellenőrzésre megnyitott fájl teljes elérési útja.
  • U lpStg = OLE tároló cím, mely meghatározza az aktuálisan ellenőrzésre megnyitott fájlt.
  • pwzHostName = a vírusirtó program neve.
  • szIconPath = az átmeneti tárolóban lévő Internetes fájl valódi URL címe.
Látható, hogy a fenti eszközök nagymértékben hozzájárulnak a vírusirtó szoftverek mind könnyebb beilleszthetőségébe. Használatukkal nem szükséges az Office vagy az Internet Explorer elemi szintű programozása.