kuinka tehdä antivirus engine
Johdanto
kun roaming ympäri techies foorumeilla, näen usein jotkut ihmiset (ja monet ei ole kovin kokenut) kysyy ”Miten teen antivirus”, joskus ei ole kovin mukautettu kielet (bat, PHP, …) ja joilla on väärä käsitys siitä, mitä antivirus on, ja miten se pitäisi rakentaa.
olen nähnyt myös monia lasten tekemiä ”virustorjuntaohjelmistoja”, joissa on hyvin vähän vielä koulussa olevia ihmisiä ja noin 4 tuntia päivässä koodaamista useana viikkona. En kerro kiddies eivät ole taitavia, mutta kerron rakentaa antivirus moottori tarvitsee joko paljon ammattitaitoisia ihmisiä kokopäivätyötä plus paljon aikaa vapauttaa kunnon ohjelmiston tai paljon rahaa maksaa heille 🙂 (jos he eivät ole vapaaehtoisia).
so, I ’ ll cover here the guidelines for a basic antivirus coding, for Windows and in C / C++. Yksi löytyy täältä viitteitä suunnitella antivirus moottori, tai yksinkertaisesti oppia, miten useimmat niistä on rakennettu.
suojaus
hyvän suojan saamiseksi virustorjuntaohjelmalla on oltava vähintään yksi ajuri, jotta se pystyy ajamaan koodia ytimen sisällä ja sillä on yleisesti pääsy ytimen sovellusliittymiin. Vistasta alkaen Microsoft ymmärsi, että Virustorjuntateollisuus tarvitsi avaimia ytimen syöttämiseen ja suodattimien aktivoimiseen strategisissa paikoissa, kuten tiedostojärjestelmässä, rekisterissä ja verkossa. Älä tyrmisty, jos rakentaa antivirus pre-Vista järjestelmien voi olla todellinen kipu, koska se ei ole suunniteltu tähän.
- Vistaa edeltävissä järjestelmissä virustorjuntayritykset käyttivät kuitenkin rootkit-tyyppisiä ominaisuuksia ovien suojaamiseen (vaikka Microsoft ei olisi suositellut sitä lainkaan) ja järjestelmäsi suojaamiseen. He käyttivät niin sanottuja koukkuja (API-kiertoteitä suodatustarkoituksiin).
- Vista+: ssa Microsoft tarjosi sovellusliittymiä, joilla low level driver voidaan sijoittaa userland-puhelujen ja ytimen sovellusliittymien väliin. Näin, se on helppo rekisteröidä virustorjunta tuote ytimeen. Enemmän, että sellainen rekisteröinti perustuu järjestelmä antaa meille mahdollisuuden lähettää järjestelmämme turvallisuus kerroksiin, jossa useita tuotteita, joilla on erilaisia tavoitteita voi yhdessä. Näin ei ollut hooksin kohdalla, sillä toteutus oli täysin tuoteriippuvainen.
HUOM.: En kata kiertoteitä koukuilla ennen Vista-järjestelmiä, koska se on helppo löytää Internetistä, ja koska se tarvitsisi koko luvun selittää, miten koukku, missä koukku ja niin… mutta sinun täytyy tietää, että se on sama idea kuin ytimen API, paitsi että sinun täytyy toteuttaa itse, mitä Microsoft tarjosi Vista+ systems.
oppiaksesi koodausajureista, voit tarkistaa, että hyödyllisiä linkkejä:
http://msdn.microsoft.com/en-us/library/windows/hardware/gg490655.aspx
http://www.codeproject.com/Articles/9504/Driver-Development-Part-1-Introduction-to-Drivers
oppia koukut, voit tarkistaa, että perusesimerkki:
http://www.unknowncheats.me/forum/c-and-c/59147-writing-drivers-perform-kernel-level-ssdt-hooking.html
prosessi
ensimmäinen asia, joka suojaa käyttäjää, on haitallisten prosessien käynnistäminen. Tämä on perusjuttu. Antivirus pitäisi rekisteröidä PsSetCreateProcessNotifyRoutineEx callback. Tekemällä tämän, kunkin prosessin luominen, ja ennen kuin pääkierre alkaa ajaa (ja aiheuttaa haitallisia asioita) antivirus callback on ilmoitettu ja saa kaikki tarvittavat tiedot.
se saa prosessin nimen, tiedostoobjektin, PID: n ja niin edelleen. Koska prosessi on kesken, kuljettaja voi käskeä palveluaan analysoimaan prosessin muistia kaiken haitallisen varalta. Se se löytää jotain, kuljettaja yksinkertaisesti asettaa CreationStatus väärä ja palata.
NTSTATUS PsSetCreateProcessNotifyRoutineEx( _In_ PCREATE_PROCESS_NOTIFY_ROUTINE_EX NotifyRoutine, _In_ BOOLEAN Remove);
VOID CreateProcessNotifyEx( _Inout_ PEPROCESS Process, _In_ HANDLE ProcessId, _In_opt_ PPS_CREATE_NOTIFY_INFO CreateInfo);
typedef struct _PS_CREATE_NOTIFY_INFO { SIZE_T Size; union { ULONG Flags; struct { ULONG FileOpenNameAvailable :1; ULONG Reserved :31; }; }; HANDLE ParentProcessId; CLIENT_ID CreatingThreadId; struct _FILE_OBJECT *FileObject; PCUNICODE_STRING ImageFileName; PCUNICODE_STRING CommandLine; NTSTATUS CreationStatus;} PS_CREATE_NOTIFY_INFO, *PPS_CREATE_NOTIFY_INFO;
kierteet
samassa ideassa kuin prosesseissa kierteet voivat olla pahantahtoisten asioiden tapa aiheuttaa vahinkoja. Esimerkiksi, voi pistää joitakin koodia legit prosessi, ja aloittaa kauko säiettä, että koodi sisällä prosessin yhteydessä (helppo seurata? 🙂 ). Näin, legit prosessi voi tehdä haitallisia asioita.
voimme suodattaa uusia säikeitä PsSetCreateThreadNotifyRoutine-takaisinkutsulla. Aina kun säiettä luodaan, antivirus ilmoitetaan tid ja PID. Näin se pystyy katsomaan langan alkuosoitekoodia, analysoimaan sitä ja joko pysäyttämään langan tai jatkamaan sitä.
NTSTATUS PsSetCreateThreadNotifyRoutine( _In_ PCREATE_THREAD_NOTIFY_ROUTINE NotifyRoutine);
VOID(*PCREATE_THREAD_NOTIFY_ROUTINE) ( IN HANDLE ProcessId, IN HANDLE ThreadId, IN BOOLEAN Create );
kuvat
kolmas dynaaminen uhka koskee kuvia, jotka voidaan ladata muistiin. Kuva on PE-tiedosto, joko EXE, DLL tai SYS-tiedosto. Jos haluat saada ilmoituksen ladatuista kuvista, rekisteröi pssetloadimagenotifyroutine. Takaisinkutsun avulla meille voidaan ilmoittaa, kun kuva ladataan virtuaalimuistiin, vaikka sitä ei koskaan suoriteta. Voimme sitten havaita, kun prosessi yrittää ladata DLL: n, ladata ohjaimen tai ampua uuden prosessin.
takaisinsoitto saa tietoa koko kuvapolusta (hyödyllinen staattisessa analyysissä), ja mitä tärkeämpää mielestäni on Kuvapohjan osoite (muistianalyysissä). Jos Kuva on haitallinen antivirus voi käyttää pieniä temppuja välttää suorituksen, kuten jäsentää muistissa kuvan ja mennä entrypoint, soita kokoonpano opcode ”ret” mitätöidä sen.
NTSTATUS PsSetLoadImageNotifyRoutine( _In_ PLOAD_IMAGE_NOTIFY_ROUTINE NotifyRoutine);
VOID (*PLOAD_IMAGE_NOTIFY_ROUTINE)( __in_opt PUNICODE_STRING FullImageName, __in HANDLE ProcessId, __in PIMAGE_INFO ImageInfo );
typedef struct _IMAGE_INFO { union { ULONG Properties; struct { ULONG ImageAddressingMode : 8; //code addressing mode ULONG SystemModeImage : 1; //system mode image ULONG ImageMappedToAllPids : 1; //mapped in all processes ULONG Reserved : 22; }; }; PVOID ImageBase; ULONG ImageSelector; ULONG ImageSize; ULONG ImageSectionNumber;} IMAGE_INFO, *PIMAGE_INFO;
tiedostojärjestelmä
kun jokainen dynaaminen asia on varmistettu, virustorjunnan pitäisi pystyä ilmoittamaan käyttäjälle haitallisista asioista lennossa, ei vain silloin, kun ne ovat käynnistymässä. Antivirus pitäisi pystyä skannaamaan tiedostoja, Kun käyttäjä avaa kansion, arkisto, tai kun se ladataan levylle. Enemmän, virustorjunta pitäisi pystyä suojelemaan itseään, kieltämällä mitään ohjelmaa poistaa sen tiedostoja.
kaiken tämän voi tehdä asentamalla tiedostojärjestelmään ajurin, tarkemmin sanottuna vanhan suodattimen minifilterin (old way). Täällä puhumme minifilter.
minifilteri on tietynlainen ajuri, joka pystyy rekisteröimään takaisinkutsuja jokaisesta tiedostojärjestelmään tehdystä luku – /Kirjoitusoperaatiosta (IRP-pääfunktiot). IRP (Interrupt Request Paquet) on objekti, jota käytetään kuvaamaan levyllä olevaa luku – /Kirjoitusoperaatiota, joka lähetetään kuljettajapinon mukana. Minifilter yksinkertaisesti lisätään kyseiseen pinoon, ja vastaanottaa IRP päättää, mitä tehdä sen kanssa (Salli/Estä toiminta).
jos haluat pienen esimerkin minifilteristä, tarkista kyseinen hyödyllinen linkki tai tuo. Microsoftin ohjeet löytyvät täältä.
löydät myös 2 esimerkkiä WDK-dokumentaatiosta täältä ja täältä.
perusminifilterin takaisinkutsu näyttää tältä. On olemassa 2 erilaista takaisinsoittoa, Pre operation ja Post operation, jotka pystyvät suodattamaan ennen kyselyn jälkeen. Tässä on esioperaatio pseudokoodi:
FLT_PREOP_CALLBACK_STATUS PreOperationCallback (__inout PFLT_CALLBACK_DATA Data, __in PCFLT_RELATED_OBJECTS FltObjects, __deref_out_opt PVOID *CompletionContext){ ... if ( all_good ) { return FLT_PREOP_SUCCESS_NO_CALLBACK; } else { // Access denied Data->IoStatus.Information = 0; Data->IoStatus.Status = STATUS_ACCESS_DENIED; return FLT_PREOP_COMPLETE; } }
Kirjaamo
kirjaamo on yksi kriittisimmistä vartiointipaikoista. On monia monia tapoja, joilla haittaohjelma pitää pysyvän käden järjestelmässä rekisteröimällä yhden (tai muutaman) avaimet/arvot rekisteriin. Tunnetuimpia paikkoja ovat Run keys ja palvelut. Tämä on myös paikka, jossa antivirus voidaan kukistaa (yhdessä tiedostojärjestelmän), yksinkertaisesti poistamalla sen kuljettaja/palveluavaimet, niin että se ei enää käynnisty järjestelmän käynnistyksen.
tämä ei ole todellinen tarve antivirukselle, joka vartioisi uudelleenkäynnistyspaikkoja, useimmat niistä eivät. mutta heidän on suojattava asennusrekisteriavaimensa, jotta malwares ei voittaisi heitä helposti. Tämä voidaan tehdä rekisteröimällä CmRegisterCallback.
takaisinsoitto antaa tarpeeksi tietoa saadakseen koko avaimen nimen, käyttöoikeustyypin (Luo, nimeä uudelleen, Poista,…) ja soittajan PID: n. Näin on helppo myöntää pääsy tai ei puhelun, asettamalla Tila kentän Post Operation callback.
NTSTATUS CmRegisterCallbackEx(_In_ PEX_CALLBACK_FUNCTION Function,_In_ PCUNICODE_STRING Altitude,_In_ PVOID Driver,_In_opt_ PVOID Context,_Out_ PLARGE_INTEGER Cookie,_Reserved_ PVOID Reserved);
EX_CALLBACK_FUNCTION RegistryCallback;NTSTATUS RegistryCallback( _In_ PVOID CallbackContext, _In_opt_ PVOID Argument1, _In_opt_ PVOID Argument2){ ... }Argument1 = typedef enum _REG_NOTIFY_CLASS { RegNtDeleteKey, RegNtPreDeleteKey = RegNtDeleteKey,...Argument2 = typedef struct _REG_POST_OPERATION_INFORMATION { PVOID Object; NTSTATUS Status; PVOID PreInformation; NTSTATUS ReturnStatus; PVOID CallContext; PVOID ObjectContext; PVOID Reserved;} REG_POST_OPERATION_INFORMATION, *PREG_POST_OPERATION_INFORMATION;
Verkko (palomuuri)
koko Internet-liikenteen ovien vartioimiseksi, joka voi olla valtava tietyissä järjestelmissä (palvelimet, valtava kaistanleveyden käyttäjät) ilman, että userlandissa tapahtuva kontekstinvaihto hidastaa sitä, ei ole suositeltavaa asentaa palomuuria, jossa ei ole taustalla olevaa ajuria, lukuun ottamatta joitakin verkkoselaimen suodattimia, jotka voivat riittää http-liikenteeseen, mutta jotka eivät suojaa haittaohjelmien viestinnältä sisään/ulos.
jotta palomuuri voidaan toteuttaa oikein, on koodattava NDIS, TDI tai jokin muu menetelmä matalan tason IP-suodatusohjaimelle. NDIS / TDI on hieman hankala tehdä, ja vaatisi paljon tietoa (enemmän kuin muut suodattimet mielestäni).
joka tapauksessa, tässä muutamia vinkkejä aloittaa koodaus tällainen ohjain, Microsoftin ohjeet, ja vanha codeproject opetusohjelma (mutta silti hyvä lukea), esimerkki NDIS palomuuri, ja esimerkki TDI palomuuri. Tässä on myös hyvä kirjoitus NDIS: n palomuurin ohitustempusta ja pieni selitys verkkoajuripinosta,
Userland protection
userland protection ei ole välttämättömyys, vaan se voi olla lisämoduuli troijalaisia pankkiireja ja tarkemmin prosessivakoojia vastaan. Ne ruiskutetaan yleensä jokaiseen prosessiin useista syistä.
ensin he pystyvät (pyydettäessä) tappamaan prosessin, jos se on tunnistettu haittaohjelmaksi (näin ei pitäisi tapahtua, koska AVs: n on tarkoitus pysäyttää se ennen kuin se käynnistyy). On aina helpompaa pysäyttää prosessi, kun olet sen yhteydessä.
Second ne pystyvät suojaamaan kriittistä prosessia, kuten web-selaimet, koukkaamista malwares pystyy kiertämään ja suodattaa API puhelut, jotta voidaan kerätä salasanoja, pankkitietoja, ja ohjata internet flow haittaohjelmien palvelimille. He vain katsella IAT muuttaminen, liittämiseen, ja voi myös asettaa koukut itse välttää LoadLibray haittaohjelmien DLL, ja siten kieltää tiettyjä menetelmiä koodin injektio.
helppo tapa pistää suojelija DLL kaikkiin prosesseihin on käyttää AppInitDll rekisteriavainta suojelija DLL: n rekisteröimiseen. Se lataa DLL jokaiseen järjestelmään käynnistettyyn prosessiin heti, kun ne yhdistävät User32: n.dll kuva (useimmat niistä).
Analysointimoottori
analysointimoottori on yksi tärkeimmistä osista, se vastaa kuljettajilta tulevien tiedosto – /muistinäytteiden analysoinnista. Jos on nopea (vaikka valtava tietokanta), ja pitäisi pystyä käsittelemään useimmat tiedostotyypit (itse purettu executables, arkistot-RAR, ZIP, pakatut tiedostot-UPX,…) ja siten pitäisi olla monia moduuleja tehdä tämä:
- Pura pakkaus: moduulin on kyettävä havaitsemaan ja purkamaan suurin osa tunnetuista pakkaajista (UPX, Armadillo, ASPack, …)
- Signature engine: virustorjunnan tietokanta sisältää miljoonia allekirjoituksia, ja moottorin pitäisi pystyä nopeasti etsimään niitä näytteeksi. Näin ollen erittäin tehokas algoritmi olisi osa sitä. Esimerkkejä : AhoCorasick, RabinKarp, merkkijonojen täsmäysalgoritmit.
- hiekkalaatikko : kyseinen moduuli ei ole välttämätön, mutta olisi plussaa siitä, että näytteitä pystyttäisiin ajamaan rajalliseen muistiin, ilman että sillä olisi vaikutusta järjestelmään. Tämä voisi auttaa purkamaan näytteitä, jotka on pakattu tuntemattomiin pakkaajiin, ja auttaa heuristista moottoria (katso jälkeen) havaitsemaan API-puhelut, joita voidaan pitää epäilyttävinä tai haitallisina. Täällä on hyvä hiekkalaatikko.
- heuristinen Moottori : kuten edellä todettiin, heuristinen moottori ei etsi allekirjoituksia, vaan pikemminkin etsii epäilyttävää käyttäytymistä (ts. näyte, joka avaa yhteyden verkkosivuilla hxxp:/ / malware_besite. com). se voidaan tehdä staattisella analyysillä tai hiekkalaatikolla.
Allekirjoitussyntaksi
allekirjoitussyntaksi on allekirjoitusmoottorin ymmärtämän kielen ”sanakirja”. Se on tapa virallistaa, mikä on löydettävissä oleva kuvio, miten sitä etsitään ja mistä sitä etsitään otokseen. Syntaksin on oltava tarpeeksi yksinkertainen, jotta tutkijat ymmärtävät, tarpeeksi tehokas käsittelemään jokaisen käyttötapauksen ja helppo jäsentää paremman moottorin suorituskyvyn.
VirusTotal on kehittänyt hyvän syntaksin ja Moottorin (Yara project), joka on avointa lähdekoodia. Sen pitäisi olla hyvä osoitin tehdä oma syntaksi, tai yksinkertaisesti käyttää sitä. Tässä on myös hyvä post blogi siitä, miten luoda allekirjoituksia antivirus.
esimerkki allekirjoituksesta:
rule silent_banker : banker{ meta: description = "This is just an example" thread_level = 3 in_the_wild = true strings: $a = {6A 40 68 00 30 00 00 6A 14 8D 91} $b = {8D 4D B0 2B C1 83 C0 27 99 6A 4E 59 F7 F9} $c = "UVODFRYSIHLNWPEJXQZAKCBGMT" condition: $a or $b or $c}
Self-protection
the self protection is very important for a antivirus, to avoid be nujered by a malware and continue to protect the user. Siksi antivirus pitäisi pystyä vartioimaan omaa asennusta ja pitää pysyvyys uudelleenkäynnistyksessä.
suojattavia paikkoja on useita: tiedostot, rekisteriavaimet, prosessit/kierteet, muisti.
- Tiedostosuojaus toteutetaan minifilteriin, jossa on erityiset säännöt virustorjunnan tiedostoille (ei pääsyä poistossa, uudelleennimeämisessä, liikkumisessa, kirjoittamisessa).
- Rekisterisuojaus tehdään rekisterisuodattimeen, jolloin käyttöoikeus evätään Kuljettajan ja palvelun rekisteriavaimilta.
- ajurikierteet on suojattu, koska ydinmoduulin purkaminen on melko mahdotonta kaatamatta järjestelmää
- pystyäkseen suojaamaan palvelua, joka on userland-prosessi, 2 ratkaisua:
- helpoin olisi lisätä sääntöjä vikojen service manager, ja asettaa jokainen vika sääntö ”käynnistä palvelu”. Näin, Kun palvelua ei pysäytä service manager, se käynnistyy uudelleen. Palvelun ei tietenkään pitäisi pystyä hyväksymään komentoja ennen kuin järjestelmä ei käynnisty uudelleen (tai pysähdy).
- toinen menetelmä, joka on yleisempi, olisi asettaa takaisinkutsuja prosessin käsittelee ObRegisterCallbacks.
asettamalla ObjectType psprocesstype ja toiminta OB_OPERATION_HANDLE_CREATE, saat pre-ja Post operation callback, ja voit palauttaa ACCESS_DENIED osaksi ReturnStatus jos prosessi käsitellä queried on myönnetty access joilla on prosessi lopettaa oikeudet (tai prosessi kirjoittaa oikeuksia, tai mitä tahansa, joka voi johtaa kaatua/tappaa), ja tietenkin jos prosessi on yksi antivirus on vartioida (sen palvelu esimerkki).
tietenkin on myös suojattava Kaksoiskahva ja PsThreadType, jotta vältetään päättymismenetelmä, joka vaatii kahvan tarttumista prosessiin tai kierteeseen. Tässä on pieni esimerkki käytöstä, että takaisinsoitto.
NTSTATUS ObRegisterCallbacks( _In_ POB_CALLBACK_REGISTRATION CallBackRegistration, _Out_ PVOID *RegistrationHandle);
typedef struct _OB_CALLBACK_REGISTRATION { USHORT Version; USHORT OperationRegistrationCount; UNICODE_STRING Altitude; PVOID RegistrationContext; OB_OPERATION_REGISTRATION *OperationRegistration;} OB_CALLBACK_REGISTRATION, *POB_CALLBACK_REGISTRATION;
typedef struct _OB_OPERATION_REGISTRATION { POBJECT_TYPE *ObjectType; OB_OPERATION Operations; POB_PRE_OPERATION_CALLBACK PreOperation; POB_POST_OPERATION_CALLBACK PostOperation;} OB_OPERATION_REGISTRATION, *POB_OPERATION_REGISTRATION;
VOID ObjectPostCallback( _In_ PVOID RegistrationContext, _In_ POB_POST_OPERATION_INFORMATION OperationInformation);
typedef struct _OB_POST_OPERATION_INFORMATION { OB_OPERATION Operation; union { ULONG Flags; struct { ULONG KernelHandle :1; ULONG Reserved :31; }; }; PVOID Object; POBJECT_TYPE ObjectType; PVOID CallContext; NTSTATUS ReturnStatus; POB_POST_OPERATION_PARAMETERS Parameters;} OB_POST_OPERATION_INFORMATION, *POB_POST_OPERATION_INFORMATION;
typedef union _OB_POST_OPERATION_PARAMETERS { OB_POST_CREATE_HANDLE_INFORMATION CreateHandleInformation; OB_POST_DUPLICATE_HANDLE_INFORMATION DuplicateHandleInformation;} OB_POST_OPERATION_PARAMETERS, *POB_POST_OPERATION_PARAMETERS;
typedef struct _OB_POST_CREATE_HANDLE_INFORMATION { ACCESS_MASK GrantedAccess;} OB_POST_CREATE_HANDLE_INFORMATION, *POB_POST_CREATE_HANDLE_INFORMATION;
GUI (graafinen käyttöliittymä)
tämä on jäävuoren näkyvä osa. Mielestäni yksi (ehkä) tärkein osa, Jos haluat myydä tuotetta. Käyttäjät rakastavat sitä, mikä on kaunista, helppokäyttöistä, intuitiivista. Vaikka se ei olisikaan 100% tehokas. GUI on seksikäs.
GUI on vain tyhjä kuori, se tekee vain graafisia hoitoja ja lähettää/vastaanottaa komentoja ytimeen (palveluun). Se näyttää myös edistymispalkit, mitä analysoidaan, tarjoaa kokoonpanon, ja niin … tässä on Avast UI. Seksikästä, eikö? 🙂
Arkkitehtuuri
globaali arkkitehtuuri voi olla jotain, joka näyttää tältä:
- GUI : ei hallinnollisia oikeuksia, heikko
- Guard DLL(s): verkkoselaimen suojaus, keskikokoinen
- Service: Admin rights. Toimii porttina ytimen koodiin ja tekee päätöksiä yhdessä jonkin tietokannan kanssa, STRONG
- ajurit: Kernel-suodattimet, STRONG
GUI ei tarvitse mitään hallinnollista oikeutta, se vain ottaa käyttäjän toimia ja lähettää ne palveluun. Se näyttää myös tuotteen tilan. Ei muuta, tämä ei ole sen tavoite. Jos GUI tapetaan, tämä ei ole ongelma, koska palvelun pitäisi pystyä käynnistämään se uudelleen.
guard DLL: t (jos sellaisia on) pistetään massiivisesti kaikkiin prosesseihin, ja niiden pitäisi pystyä etsimään IAT-koukkuja ja/tai haitallisia lankoja. Niitä pitäisi olla aika vaikea purkaa tai kukistaa. Ne eivät ole kriittisiä vaan tärkeitä.
palvelu on tuotteen ydin. Sen pitäisi olla tappamaton, tai ainakin sen pitäisi pystyä käynnistämään itsensä uudelleen tappamalla. Palvelu vastaa kaikkien tuotteen moduulien välisestä viestinnästä, se lähettää komentoja ajureille, ottaa komentoja käyttäjältä ja kyselee tietokannasta näytteen analysointia varten. Nämä ovat aivot.
ytimen ajurit ovat myös kriittisiä. Ne ovat lonkeroita, jotka keräävät tietoa kaikesta, mitä järjestelmässä tapahtuu, ja välittävät ne palveluun päätettäväksi. He voivat myös evätä pääsyn vartioituihin paikkoihin palvelun päätöksen perusteella.
johtopäätös
vahvan, luotettavan ja vakaan virustorjuntamoottorin tekeminen on monimutkainen tehtävä, joka tarvitsee kokeiltuja ihmisiä, joilla on erittäin vahva tietämys windows-ytimen ohjelmoinnista, windows-sovellusohjelmoinnista, GUI-suunnittelusta, ohjelmistoarkkitehtuurista, haittaohjelmien analysoinnista, …
vakaiden ajurien rakentaminen on myös monimutkainen tehtävä, koska pieni hiekanjyvä voi kaataa koko järjestelmän. Se tarvitsee testausta, testausta ja paljon testausta. Kun moottori on valmis ja toimii, sinun tarvitsee vain palkata tutkijoita analysoimaan malwares ja lisätä allekirjoituksia tietokantaan 🙂 mitä odotat? Mene! 😀
linkit
- http://www.symantec.com/connect/articles/building-anti-virus-engine