Funkcijos iškvietimo įvykio emuliacija. Funkcijų iškvietimo įvykio emuliacija Ką reiškia skambučio emuliacija?


Maždaug prieš šešis mėnesius manęs paklausė maždaug taip: „Naudoju didelę sistemą, kuri paleidžia tam tikrą vartotojo veiksmo funkciją. Noriu, nekeisdamas šios funkcijos kodo, šios funkcijos iškvietimo atveju vykdyti savo kodą. Praktika toli gražu ne pati geriausia, funkcijos iškvietimo įvykio neegzistuoja, aš tiesiog pasukau pirštą į smilkinį ir pasakiau, kad tai baisus šūdas kodas, neturėtumėte to daryti, o tai tiesiog neįmanoma.

Prieš porą dienų važiuodamas namo gana šiltą žiemos vakarą, nebūdingą Odesai, man kilo netipiška mintis: „O jeigu pabandytume padaryti tai, ko Bogdanas prašė prieš šešis mėnesius? Grįžęs namo įsijungiau kompiuterį ir per porą minučių padariau tai, ką planavau. Visų pirma, man buvo įdomu, kaip įtaisyti metodai elgsis, jei jie būtų perrašyti, ir ar galima po to kažkaip pavadinti jų ankstesnę būseną, kuri buvo prieš nepaisymą. Žinojau, kad jei objektas bus apibrėžtas iš naujo, nuorodos į jį nebus sunaikintos, išlaikant tą pačią išvaizdą. Kalbant apie įmontuotas funkcijas, kilo abejonių. Pasirodo, gali.

Greičiausiai man niekada net nereikės naudoti tokio įrankio, tačiau, grynai hipotetiškai, galbūt kas nors turės užduotį atsekti skambutį į tam tikrą funkciją, gauti kiekvieno skambučio ataskaitą, kurią sudaro:

  1. Vykdymo rezultatas
  2. Argumentai praėjo
  3. Skambinimo kontekstas (kas tai yra, kai jis vadinamas)
  4. Funkcijos iškvietimų skaičius po tvarkyklės sukūrimo
(Šis sąrašas visiškai atitinka tvarkytojui perduotus argumentus)

addCallListener = function(func, callback)( var callNumber = 0; return function()( var args = .slice.call(arguments); var rezultatas; try ( rezultatas = func.apply(this, argumentai); callNumber++; ) catch (e) ( callback(e, args, this, callNumber); mesti e; ) callback(result, args, this, callNumber); grąžinti rezultatą; ) )

Labai paprasta ir trumpa, tiesa?

Tada iš naujo apibrėžiame kai kurias funkcijas taip:

SomeFunct = addCallListener(someFunct, function(rezultatas, args, self, callNumber)( //Daryk ką nors )); // arba Constructor.prototype.method = addCallListener(Constructor.prototype.method, function(result, args, self, callNumber)( //Do Something ));

Akivaizdu, kad tai turėtų būti „matoma“ toje kodo dalyje, kurioje tai vyksta.

Keletas pavyzdžių
Norėdami paleisti pavyzdžius, turite turėti atvirą konsolę (chrome ji vadinama Ctrl+Shift+i).

Ačiū bendražygiams iš javascript.ru forumo už kritiką ir papildymus.

UPD
Šiek tiek išplėsta funkcija: dabar vietoj vieno atgalinio skambinimo objektas perduodamas kaip antrasis argumentas

  1. prieš (iššaukiamas prieš prasidedant funkcijai)
  2. sėkmės (iššaukiama, jei funkcija pavyko)
  3. klaida (jei įvyko klaida)
  4. po (vistiek skambinama, nepaisant sėkmės)
Kiekvienam prižiūrėtojui perduodamas objektas
  1. aš (kontekstas)
  2. pavadinimas (funkcijos pavadinimas)
  3. būsena ("klaida" arba "sėkmė")
  4. successNumber (sėkmingų skambučių skaičius)
  5. errorNumber (skambučių su klaida skaičius)
  6. rezultatas (rezultatas, jei toks yra)
  7. klaida (klaida, jei yra)
Be to, funkcija addCallListener dabar yra funkcijos konstruktoriaus objekto dalis, kad būtų išvengta lango ar proceso.

Čia galite pabandyti ir išbandyti.

Maždaug prieš šešis mėnesius manęs paklausė maždaug taip: „Naudoju didelę sistemą, kuri paleidžia tam tikrą vartotojo veiksmo funkciją. Noriu, nekeisdamas šios funkcijos kodo, šios funkcijos iškvietimo atveju vykdyti savo kodą. Praktika toli gražu ne pati geriausia, funkcijos iškvietimo įvykio neegzistuoja, aš tiesiog pasukau pirštą į smilkinį ir pasakiau, kad tai baisus šūdas kodas, neturėtumėte to daryti, o tai tiesiog neįmanoma.

Prieš porą dienų važiuodamas namo gana šiltą žiemos vakarą, nebūdingą Odesai, man kilo netipiška mintis: „O jeigu pabandytume padaryti tai, ko Bogdanas prašė prieš šešis mėnesius? Grįžęs namo įsijungiau kompiuterį ir per porą minučių padariau tai, ką planavau. Visų pirma, man buvo įdomu, kaip įtaisyti metodai elgsis, jei jie būtų perrašyti, ir ar galima po to kažkaip pavadinti jų ankstesnę būseną, kuri buvo prieš nepaisymą. Žinojau, kad jei objektas bus apibrėžtas iš naujo, nuorodos į jį nebus sunaikintos, išlaikant tą pačią išvaizdą. Kalbant apie įmontuotas funkcijas, kilo abejonių. Pasirodo, gali.

Greičiausiai man niekada net nereikės naudoti tokio įrankio, tačiau, grynai hipotetiškai, galbūt kas nors turės užduotį atsekti skambutį į tam tikrą funkciją, gauti kiekvieno skambučio ataskaitą, kurią sudaro:

  1. Vykdymo rezultatas
  2. Argumentai praėjo
  3. Skambinimo kontekstas (kas tai yra, kai jis vadinamas)
  4. Funkcijos iškvietimų skaičius po tvarkyklės sukūrimo
(Šis sąrašas visiškai atitinka tvarkytojui perduotus argumentus)

addCallListener = function(func, callback)( var callNumber = 0; return function()( var args = .slice.call(arguments); var rezultatas; try ( rezultatas = func.apply(this, argumentai); callNumber++; ) catch (e) ( callback(e, args, this, callNumber); mesti e; ) callback(result, args, this, callNumber); grąžinti rezultatą; ) )

Labai paprasta ir trumpa, tiesa?

Tada iš naujo apibrėžiame kai kurias funkcijas taip:

SomeFunct = addCallListener(someFunct, function(rezultatas, args, self, callNumber)( //Daryk ką nors )); // arba Constructor.prototype.method = addCallListener(Constructor.prototype.method, function(result, args, self, callNumber)( //Do Something ));

Akivaizdu, kad tai turėtų būti „matoma“ toje kodo dalyje, kurioje tai vyksta.

Keletas pavyzdžių
Norėdami paleisti pavyzdžius, turite turėti atvirą konsolę (chrome ji vadinama Ctrl+Shift+i).

Ačiū bendražygiams iš javascript.ru forumo už kritiką ir papildymus.

UPD
Šiek tiek išplėsta funkcija: dabar vietoj vieno atgalinio skambinimo objektas perduodamas kaip antrasis argumentas

  1. prieš (iššaukiamas prieš prasidedant funkcijai)
  2. sėkmės (iššaukiama, jei funkcija pavyko)
  3. klaida (jei įvyko klaida)
  4. po (vistiek skambinama, nepaisant sėkmės)
Kiekvienam prižiūrėtojui perduodamas objektas
  1. aš (kontekstas)
  2. pavadinimas (funkcijos pavadinimas)
  3. būsena ("klaida" arba "sėkmė")
  4. successNumber (sėkmingų skambučių skaičius)
  5. errorNumber (skambučių su klaida skaičius)
  6. rezultatas (rezultatas, jei toks yra)
  7. klaida (klaida, jei yra)
Be to, funkcija addCallListener dabar yra funkcijos konstruktoriaus objekto dalis, kad būtų išvengta lango ar proceso.

Čia galite pabandyti ir išbandyti.

Visą gyvenimą naudojau paprastus telefonus ir pirmenybę teikiau tik „Nokia“ prekės ženklui. Bet gyvenimas nestovi vietoje, kažkada norėjau telefono su kamera ir prieiga prie interneto – taip patogu! Mobiliųjų telefonų parduotuvėje „Nokia“ mygtukų modelių asortimentas nebuvo didelis, tačiau iškart buvo pažvelgta į „301 Dual“ variantą. Man patinka paprasta, bet skoninga, be nereikalingų erzinančių smulkmenų. Šis telefonas pagal išvaizdą mane patenkino 100%. Paprašiau pamatyti iš arčiau – man viskas patiko. Pirkinys man kainavo keturis tūkstančius. Taip pat nusipirkau odinį dėklą.

Turiu du įspūdžius apie telefoną. Kai pirmą kartą pripratau, viskas atrodė prašmatniai. Ne taip seniai aš pakeičiau savo seną „Oka“ į „Renault Logan“ – taigi, palyginimas buvo panašus. Man labai patiko tai, kad telefone viskas apgalvota iki smulkmenų. Stilingas ir patogus. Ko tau reikia. Tačiau laikui bėgant, žinoma, išryškėjo ir minusai, bet pirmiausiai.

Išoriškai man patinka telefonas. Stilingas, tvarkingas, plonas. Labai geras plastikas. Telefono dydis palyginti didelis, bet telpa kišenėje. Telefono ekranas didelis, spalva neerzina, atspalviai švelnūs ir malonūs akiai. Mygtukai patogūs, be to, laikui bėgant nenusidėvės, bet yra tikimybė, kad išsipūs (jau turėjau telefoną su panašia “kieta” klaviatūra, o nuo reguliaraus naudojimo visada buvo ištinęs, tikiuosi, su šiuo telefonu nebus). Telefono polifonija yra aiški, bet gana tyli. Gatvėje ir kartais net namuose jo negirdžiu ir visada praleidžiu skambučius. Tai taikoma tiek „vietiniams“ signalams, tiek atsisiųstai muzikai. Įsiutina. Bet, pavyzdžiui, klausytis muzikos, garsiakalbis yra idealus. Kartais namuose klausausi radijo per garsiakalbį – skamba kaip geras magnetofonas. Man labai patinka meniu telefone, patogus, yra įvairių programų. Telefonų knyga puiki! Čia yra grafikas po vardu ir pavarde. Prie kontakto galite pridėti krūvą skaičių, parinktys – jūra. Tačiau nėra pagrindinio dalyko, kas, mano nuomone, turėtų būti kiekviename telefone – juodasis sąrašas. Bėdą apsunkina tai, kad mano mobiliojo ryšio operatorius neteikia numerių blokavimo paslaugos. Išmanančiam žmogui paragintas bandžiau rasti tinkamą pritaikymą – bet veltui. Taigi turėjau pakeisti numerį ir būti atsargiam jį pažįstančių žmonių rato atžvilgiu.

Internetas .... Tai atskiras pokalbis. Gana primityvi. Jeigu ieškote telefono, kuris leistų patogiai bendrauti socialiniuose tinkluose, pamiršus apie kompiuterį – praeikite pro šalį. Šiame telefone galite peržiūrėti tik naujinimus. Kol puslapiai kraunasi, kramtysite nagus. Ir aš jau pripratau prie nuolatinių nesklandumų: veiksmai labai dažnai niekur nedingsta. Tai taip pat taikoma siunčiant žinutes, komentarus ir įkeliant puslapius (nuo pirmo karto, kaip taisyklė, viskas pasirodo „už nieką“). Pranešimus, prieš siųsdamas, visada nukopijuoju: jei veiksmas neveikia, visas tekstas nuleidžiamas į kanalizaciją. Būna, ir šimtą kartų siunčiamas tas pats. Kalbant apie simpatijas, tai kita istorija. Štai jūs, kai žiūrite per juostą, uždėkite „patinka“ ant to, kas jums patiko, ir slinkite toliau, tiesa? Čia viskas sudėtinga. Pirmasis patinka, kaip taisyklė, dedamas, o antrasis siunčia jūsų naujienų kanalą į pačią pradžią. Ir taip reguliariai! Pastaruoju metu vis dažniau galvoju apie naujo „Android“ pagrindu veikiančio jutiklinio telefono įsigijimą, nes visi šie trūkumai mane gana erzino: tai atima daug laiko ir nervų.

Be to, telefonas dažnai būna brokas, ko, tiesą pasakius, nesitikėjau iš „Nokia“. Be jokios priežasties ekranas pasidaro baltas ir visa sistema vėl paleidžiama iš naujo. Man nepatinka tai, kad rašant nematote raidžių saulėje, nepatinka fotoaparatas... Akivaizdu, kad ne 3.2! Maksimalus traukimas yra 2 megapikseliai. Taip, ir telefonas veikia šiek tiek pristabdytas, nors tuo pačiu mano atmintis beveik tuščia (per skambutį įkeliama tik viena daina). Kalbant apie galimybes, atrodo, kad telefonas yra protingas, tačiau viduje yra daug pavadinimų, kurių aš nesuprantu. Pavyzdžiui, „Skambučių emuliacija“ – kas tai?

Apskritai esu nusivylęs. Tikėjausi geriau. Man patinka dizainas, visa kita yra taip. Ateityje nusipirksiu kitą. Telefoną vertinu vidutiniškai trimis balais, tačiau rekomenduoju jį įsigyti: kainos ir kokybės santykis pakankamai adekvatus.

Aš atnaujinu savo apžvalgą praėjus šešiems mėnesiams po pirkimo.Šiandien yra 2015 m. sausio 3 d. Su telefonu ir eik, nors iš pradžių buvo laukinis noras jį pakeisti. Laikui bėgant pripratau, dabar man patinka ir kito nebenoriu. Norėdamas dirbti internete, aš įdiegiau sau naršyklę „Opera“, o dabar viskas veikia gerai. Ir fotoaparatas nebuvo toks blogas. Sakyčiau, kad nuotraukų kokybė tikriausiai bus geresnė nei kitų šios kainų kategorijos telefonų modelių ir net kai kurių brangesnių. Juos galima atsispausdinti ir nesigėdyti skelbti socialiniuose tinkluose. Vienintelis įspėjimas – kažkodėl geriau fotografuoja patalpoje nei gatvėje. Mygtukai laikui bėgant neišsipūtė, nerimavau veltui. Ir pats telefonas neprarado „prekinės“ išvaizdos. Periodiškai, kaip ir anksčiau, jis užklumpa gedimus, bet ne dažnai. Porą kartų nutiko taip, kad telefonas išsijungė pats ir ilgai negalėjau jo įjungti. Su kuo tai buvo susiję – nežinau. Mano atmintis visiškai neužpildyta (joje nelaikau nuotraukų ir muzikos, tik SMS ir kontaktus). „Trys“ keičiu į „keturis“. Ne toks jau blogas telefonas.


Patento RU 2514141 savininkai:

Techninė sritis

Išradimas yra susijęs su antivirusiniais sprendimais, o tiksliau su sistemos funkcijų iškvietimų emuliavimo būdais, siekiant apeiti emuliacijos atsakomąsias priemones.

moderniausias

Šiuolaikinių programų, įskaitant kenkėjiškas programas, kodas yra sudėtingas instrukcijų rinkinys: šuoliai, skambučiai, kilpos ir pan. Pažymėtina, kad vykdomųjų failų sudėtingumas nuolat didėja, o tai siejama su populiarėjančiu aukšto lygio programavimo kalbomis, taip pat su kompiuterinės įrangos ir operacinių sistemų komplikavimu. Tai taikoma tiek patikimoms, tiek kenkėjiškoms programoms. Kenkėjiškos programos gali atlikti daugybę tipiškų veiksmų, pvz., pavogti slaptažodžius ir kitus konfidencialius naudotojo duomenis, įskaitant kompiuterį, esantį botnete, skirtą DDoS atakoms vykdyti arba šlamšto siuntimui, blokuoti tinkamą sistemos veikimą turto prievartavimo tikslais ir kitus neigiamus padarinius. ir nepageidaujami veiksmai vartotojo požiūriu .

Vienas iš galimų kenkėjiškų programų tyrimo būdų yra naudoti emuliatorių, kurį antivirusinė programa naudoja programos elgsenai analizuoti. Yra įvairių emuliavimo būdų. Vienas iš jų – programinis procesoriaus, atminties ir kitų įrenginių modeliavimas, sukuriant virtualias procesoriaus registrų, atminties ir procesoriaus instrukcijų rinkinio kopijas. Taigi programos instrukcijos vykdomos ne tikrame procesoriuje, o jo virtualioje kopijoje, o iškvietimai į sistemos API funkcijas emuliuoja ir siunčia atgal emuliuotą funkcijos rezultatą.

Norėdami kovoti su programos kodo emuliacija, kenkėjiškų programų kūrėjai naudoja įvairius triukus, kurie gali būti pagrįsti apribojimais, susijusiais su emuliacijos procesu ir emuliatoriaus įdiegimu antivirusiniuose sprendimuose. Vienas iš šių būdų yra įtraukti į programos kodą daug instrukcijų, kurios neturi kenkėjiško komponento, tačiau jas mėgdžioti reikia laiko. Atsižvelgiant į tai, kad laikas, skirtas programos kodui emuliuoti, yra ribotas, kad nesukeltų vartotojo nepasitenkinimo (paprastai šis laikas gali trukti kelias sekundes), emuliacijos procesas gali sustoti prieš pradedant vykdyti tikrai kenksmingą kodą. Vienas būdas kovoti su šiuo anti-emuliacijos metodu yra aprašytas US7603713, kuris veikia vykdydamas daugybę instrukcijų tikrame procesoriuje, o tai žymiai pagreitina nežinomų programų emuliavimo procesą, siekiant pasiekti patį kenksmingiausią kodą. Kitas metodas, atskleistas paraiškoje US20110225655, mano, kad galimybė apibrėžti programą kaip įtartina, jei ji neutralizuoja emuliaciją. Šis metodas pagrįstas tuo, kad saugi (teisėta) programa paprastai rodo įspėjimą apie emuliatoriaus vykdymo negalimą, o kenkėjiška programa ramiai nutraukia vykdymą arba staigiai pakeičia vykdymo vektorių (logiką).

Kitas būdas kovoti su emuliacija yra nustatyti faktą, kad programa šiuo metu veikia emuliatoriuje, o ne tikroje operacinėje sistemoje. Reikėtų pažymėti, kad emuliatorius sukuria tik ribotą virtualią procesoriaus, kompiuterio komponentų ir operacinės sistemos (OS) kopiją su sutrumpintomis galimybėmis, nes visiškai atkurti visų to paties procesoriaus ar sistemos API funkcijų galimybių neįmanoma. dėl kelių priežasčių: , nedokumentuotų funkcijų buvimas, didelis našumo sumažėjimas naudojant tokį emuliatorių. Taigi, kenkėjiškų programų kūrėjai gali naudoti šias gudrybes, kad nustatytų vykdymo faktą emuliuotoje aplinkoje:

Nedokumentuotos arba retai naudojamos API funkcijos iškvietimas.

Vykdykite procesoriaus instrukcijų rinkinį ir patikrinkite, pavyzdžiui, vėliavėlių rinkinį. Nepakankamai tiksliai emuliuojant procesoriaus komandas, daugelio vėliavėlių reikšmės gali skirtis nuo tų, kurios būtų nustatytos vykdant procesoriuje.

API funkcijos vykdymo teisingumo tikrinimas. Patikra gali būti labai sudėtinga ir apimti neteisingo skambučio grąžintų klaidų kodų analizę arba įdiegtų procesorių registrų patikrinimą.

Ieškokite atmintyje konkrečių baitų. Pavyzdžiui, MZ antraštės paieška baitas po baito atmintyje įkėlus kernel32.dll proceso pradžioje. „Vista 64“ versijoje kernel32.dll naudoja 64 KB lygiavimą, o sritis tarp antraštės ir pirmosios sekcijos nebus susieta su proceso adreso erdve, o jei bandysite ją pasiekti, bus pateikta išimtis. Jei nebuvo užregistruota jokia išimtis, bus iškviesta standartinė OS išimčių tvarkyklė ir procesas bus nutrauktas.

Pastarasis metodas naudojamas visur, nes jis leidžia nuolat apeiti esamus emuliatorius, todėl neįmanoma įdiegti teisingos kiekvienos API funkcijos emuliacijos dėl aukščiau aprašytų priežasčių.

Ankstesnės technikos ir galimybių, atsirandančių jas sujungiant vienoje sistemoje, analizė leidžia gauti naują rezultatą ir pagerinti kenkėjiškų programų aptikimo kokybę naudojant sistemos funkcijų iškvietimų emuliavimo metodą, siekiant apeiti emuliacijos atsakomąsias priemones.

Išradimo esmė

Techninis šio išradimo rezultatas yra sudaryti galimybę emuliuoti iškvietimus į sistemos funkcijas.

Pagal vieną iš įgyvendinimo variantų yra numatytas sistemos funkcijų iškvietimų emuliavimo emuliacijos atsakomąsias priemones apeiti metodas, kuriame: kaip įvestis į emuliatorių gaunamas vykdomasis failas; tikrinti reikalavimo sąlygą emuliuoti sistemos funkcijų iškvietimus; jei įvykdoma bent viena iš aukščiau nurodytų sąlygų, naudojama sistemos iškvietimo emuliacija; emuliuoti vykdomojo failo vykdymą pagal nuoseklų instrukcijų vykdymą; kai aptinkamas sistemos funkcijos iškvietimas, emuliacijos proceso perjungimas į sistemos skambučio emuliaciją; sukurti sistemos funkcijų skambučio emuliaciją žemo lygio skambučių grandinės forma.

Pagal vieną iš konkrečių įgyvendinimo parinkčių, reikalavimo emuliuoti iškvietimus į sistemos funkcijas sąlyga yra greitas vykdomojo failo emuliavimo užbaigimas.

Pagal kitą konkretų įgyvendinimo variantą sistemos funkcijų iškvietimų emuliacijos reikalavimo sąlyga yra ta, kad emuliacijos laikas neribojamas.

Pagal kitą konkrečią įgyvendinimo parinktį, reikalavimo emuliuoti sistemos funkcijų iškvietimus sąlyga yra informacijos apie nežinomą failą iš antivirusinės programos nebuvimas.

Pagal vieną iš konkrečių įgyvendinimo variantų, nuoseklus komandų vykdymas yra bent jau visų perėjimų, tiek sąlyginių, tiek besąlyginių, vykdymas, taip pat įvairių vykdomojo failo funkcijų iškvietimas.

Pagal kitą konkretų įgyvendinimą žemo lygio iškvietimas yra asamblėjos kalbos instrukcija.

Pagal kitą privataus įgyvendinimo variantą žemo lygio skambutis yra nuoseklus visų susijusių sistemos funkcijų iškvietimas.

Pagal vieną iš privačių diegimo parinkčių sistemos funkcijos iškvietimo emuliacija nutraukiama perjungiant į branduolio režimą.

Trumpas brėžinių aprašymas

Papildomi šio išradimo objektai, savybės ir pranašumai paaiškės perskaičius šį išradimo įgyvendinimo varianto aprašymą su nuoroda į pridedamus brėžinius, kuriuose:

1 paveiksle parodytas klasikinio emuliatoriaus pavyzdys, kai apdorojamas API funkcijos iškvietimas.

2 parodytas API funkcijos vykdymo Windows operacinėje aplinkoje pavyzdys.

3 iliustruoja API funkcijų iškvietimų emuliavimo būdą pagal šį išradimą.

4 parodyta sistema, kurioje šis išradimas gali būti įgyvendintas.

Fig. 5 iliustruoja šio išradimo įgyvendinimo būdą.

6 yra bendros paskirties kompiuterinės sistemos, kurioje šis išradimas gali būti įgyvendintas, pavyzdys.

Išradimo įgyvendinimo variantų aprašymas

Šio išradimo objektai ir ypatumai, šių objektų ir savybių pasiekimo būdai paaiškės remiantis pavyzdiniais įgyvendinimo variantais. Tačiau šis išradimas neapsiriboja žemiau pateiktais pavyzdiniais įgyvendinimo variantais, bet gali būti įgyvendintas įvairiomis formomis. Aprašymo esmė yra ne kas kita, o konkrečios detalės, pateiktos siekiant padėti šios srities specialistui visapusiškai suprasti išradimą, o šis išradimas yra apibrėžtas tik pridedamų apibrėžties ribose.

1 paveiksle parodytas klasikinio emuliatoriaus pavyzdys, kai apdorojamas API funkcijos iškvietimas. Kai API funkcija iškviečiama, kai programa veikia tikroje OS, OS atlieka daugybę veiksmų, o tai lemia sudėtinga OS vidinė architektūra. Schematiškai iškvietus API funkciją, procesoriuje įvykdoma daug instrukcijų, po kurių iškviestos API funkcijos darbo rezultatas grąžinamas į programą. Kai emuliatorius veikia, iškvietus API funkciją, kelių instrukcijų skaičius nevykdomas taip pat, kaip tikroje OS, o programa grąžina imituotą API funkcijos rezultatą. Pavyzdžiui, bandant sukurti failą, emuliatorius grąžins žymeklį į virtualų failą. Tačiau nepaisant bendro darbo rezultato (pavyzdžiui, žymeklio grąžinimas į failą), iškviestos API funkcijos darbo rezultatas gali skirtis OS ir emuliatoriuje, o tai yra dėl to, kad skambinant API funkcija, pavyzdžiui, kai kurie procesoriaus registrai gali būti pakeisti, o tai neatsispindės, kai emuliatorius veikia. Šis neatitikimas gali būti naudojamas siekiant užkirsti kelią emuliacijai ir, visų pirma, kenkėjiškoms programoms.

2 parodytas API funkcijos vykdymo Windows operacinėje sistemoje pavyzdys. „WriteFile“ buvo pasirinktas kaip API funkcijos pavyzdys. 210 bloke Windows programa (pvz., Microsoft Word arba Notepad) bando įrašyti duomenis į failą, iškviesdama atitinkamą Win32 API funkciją WriteFile, esančią Kernel32.dll. Tada 220 veiksme NtWriteFile iškviečiamas Ntdll.dll (t. y. visos susijusios sistemos funkcijos iškviečiamos iš eilės), o tai savo ruožtu veda į spąstus 230 veiksme ir ieškoma atitinkamos tvarkyklės (tai atlieka KiSystemService funkcija Ntoskrnl.dll ), kai skambinama NtWriteFile. Atkreipkite dėmesį, kad šis procesas vyksta vartotojo režimu, o iškvietus pertraukimą, įvyksta perėjimas į branduolio režimą. 240 veiksme NtWriteFile iškviečiamas tiesiogiai į Ntoskrnl.dll, o failas rašomas tiesiogiai 250 veiksme (čia taip pat paslėpta informacija, susijusi su failų sistemos tvarkyklės veikimu). Remiantis tuo, tampa aišku, kad šiuolaikinėje OS iškvietus nors vieną API funkciją, įvyksta daugybė operacijų (t. y. žemesnio lygio įvykių, atsižvelgiant į pačią OS struktūrą), įskaitant programos vykdymo perėjimą iš vartotojo režimas į branduolio režimą. Svarstant šias operacijas komandų vykdymo asamblėjos kalba požiūriu, tampa aišku, kad labai sunku teisingai emuliuoti API funkcijos iškvietimą, nes reikia atsižvelgti į visų procesoriaus registrų būseną ir visų vidinės OS struktūros.

Kaip jau minėta, kenkėjiškų programų kūrėjai gali naudoti įvairias parinktis, kad patikrintų API funkcijos teisingumą, įskaitant centrinio procesoriaus registrų patikrinimą, kad nustatytų, ar programa veikia emuliatoriuje. Taigi, siekiant apeiti (tiksliau, išlaikyti) tokį patikrinimą, šis išradimas siūlo visų iškviestų funkcijų vykdymo būdą pagal mašininio kodo instrukcijas.

3 iliustruoja API funkcijų iškvietimų emuliavimo būdą pagal šį išradimą. 310 veiksme įvyksta klasikinis programos emuliavimas, kaip, pavyzdžiui, „Notepad“ programos emuliacijos atveju (nedidelis programos kodo fragmentas rodomas derinant ją „OllyDbg“ derinimo priemonėje):

Tokios instrukcijos kaip MOV, PUSH, SUB, LEA ir panašiai bus emuliuojamos tokios, kokios yra, t.y. emuliuojant surinkėjo instrukcijas naudojant virtualų procesorių emuliatoriuje. Kai įvyksta API funkcijos iškvietimas (kaip nustatyta 320 bloke), pvz

tada tokio skambučio emuliacija vyks pagal mašinos instrukcijas (330 veiksmas), atsižvelgiant į visus įdėtuosius skambučius, kaip parodyta, pavyzdžiui, 2 pav. Kai vykdant API funkciją bus pasiektas perėjimas į branduolio režimą, kuris bus tikrinamas 340 žingsnyje, emuliacija bus perkelta į standartinį (įprastą, klasikinį) režimą, t.y. tolimesni kiekvienos komandos iškvietimai nebus apdorojami nuosekliai, o bus grąžintas tik funkcijos iškvietimo rezultatas. Po to metodas grįžta iš 350 žingsnio į 310 veiksmą tolimesniam emuliavimui.

4 parodyta sistema, kurioje šis išradimas gali būti įgyvendintas. Tarkime, kad vartotojo kompiuteryje yra nežinomas vykdomasis failas 410, kurį reikia emuliuoti, kad būtų nustatyta, ar jis gali būti kenkėjiškas. Reikėtų paaiškinti, kad vykdomasis failas turėtų būti suprantamas ne tik kaip vykdomieji failai, turintys PE arba ELF formatą, bet ir kiti failai, kuriuose yra įvairaus kodo, pvz., .class arba .jar failai (skirti vykdyti Java virtualioje mašinoje), įvairūs scenarijaus failai , pvz., .vbs ir daugelis kitų. Pačiame faile 410 yra instrukcijos 420, kurių nuoseklioji emuliacija atkuria failo 410 vykdymą. Atkreipkite dėmesį, kad nuoseklioji emuliacija apima visų šuoliukų, tiek sąlyginių, tiek besąlyginių, vykdymą, taip pat įvairių vykdomojo failo 410 funkcijų iškvietimą. emuliacija, kiekviena instrukcija 420 patenka į komandų analizavimo modulio 430 įvestį emuliatoriuje 405, o šis modulis nustato, ar instrukcija yra sistemos API funkcijos iškvietimas ir, jei atsakymas teigiamas, emuliatorius 405 emuliuoja iškvietimą į ši funkcija (rodoma kaip 450) žemesnio lygio įvykių grandinės forma, kaip parodyta, pavyzdžiui, 2 pav. (ty 210-230 žingsniai 2 pav. prieš įjungiant branduolio režimą). Kitu atveju emuliatorius 405 emuliuoja savo vykdymą kaip klasikinės emuliacijos dalį (rodomas kaip 440), t.y. grąžina sumodeliuotą funkcijos rezultatą (t. y. neimmuliuojant visų 2 pav. pažymėtų etapų). Kai kuriais atvejais API funkcijos iškvietimo nurodymą galima emuliuoti, kaip tai būtų daroma klasikinės 440 emuliacijos atveju. Pavyzdžiui, funkcija URLDownloadToFile žemo lygio atvaizde turi sudėtingą iškvietimų į TCP grandinę. / IP tvarkyklę, ir tokios grandinės nuoseklusis emuliavimas gali būti nepraktiškas. Viename įgyvendinime sistemos skambučio emuliacijos naudojimo poreikį nustato komandų analizatorius 430, pavyzdžiui, remiantis žinoma informacija apie tam tikrų skambučių emuliacijos greitį.

Fig. 5 iliustruoja šio išradimo įgyvendinimo būdą. 510 bloke bandoma emuliuoti vykdomąjį failą 410 vartotojo kompiuteryje. 520 bloke patikrinama, ar reikia emuliuoti sistemos API funkcijas.

Reikalavimai emuliuojančioms sistemos funkcijoms:

Pradinė emuliacija baigta labai greitai ir neįspėjus vartotojo. Paprastai tai reiškia, kad programa aptinka emuliatoriaus veikimo faktą, o vartotojui apie tai nepraneša, o tai dažniausiai daro pavojingos programos.

Būtina atlikti gilesnę vykdomojo failo 410 emuliaciją. Taip atsitinka, jei su vykdomuoju failu 410 anksčiau nebuvo susidurta, o tai reiškia, kad nėra informacijos apie nežinomą failą iš antivirusinės programos, kurioje yra emuliatorius. veikia (t. y. ji nėra klasifikuojama ir nėra antivirusinių programų duomenų bazėse kaip kenkėjiška ar saugi programa).

Klasikinis emuliatorius aptiko metodus, kaip kovoti su emuliacija, pvz.: API funkcijų iškvietimas su akivaizdžiai neteisingais parametrais, po to patikrinama klaidos būsena (kodas), tikrinami nepastovūs registrai iškvietus API funkcijas, nuskaitomas sistemos modulių turinys, bandoma aptikti debugger sistemoje, taip pat iškviečia standartinius metodus, skirtus aptikti vykdymą virtualioje mašinoje (RedPill).

Savaiminio išpakavimo ar savisaugos metodų (pakuotojų ir apsauginių priemonių) aptikimas.

Poreikis emuliuoti potencialiai kenkėjišką programą kaip vartotojo OS dalį su visomis bibliotekomis ir interpretatoriais (pvz., .NET arba Java). Be to, siūlomas emuliacijos metodas leidžia emuliuoti paketinius ir valdymo failus, pvz., paketinį failą (paketinį failą) su plėtiniu .bat arba .cmd, powershell scenarijus, reg failus, skirtus duomenims įvesti į registrą, ir kitų tipų failus, kurį paleidus vartotojo kompiuteryje pateikiamas vykdymo kodas.

Emuliacijos laikas nėra ribojamas griežtomis ribomis, pavyzdžiui, tai gali būti dešimtys sekundžių ar net kelios minutės ar daugiau, kas būdinga pirmos programos analizės metu.

Įvykdžius bent vieną iš šių reikalavimų, 530 bloke emuliuojami sistemos iškvietimai 450, kad būtų emuliuojamos API funkcijos pagal mašinos instrukcijas, kaip parodyta 4 pav. Kitu atveju 540 veiksme naudojama tik klasikinė emuliacija 440. Naudojant tokius reikalavimus, antivirusinėje programoje galima lanksčiau žiūrėti į emuliacijos procesą, nesukeliant vartotojo nepasitenkinimo, kuris yra susijęs su papildoma apkrova dėl būtinybės emuliuoti API funkcijas. pagal mašinos instrukcijas.

6 parodytas bendros paskirties kompiuterinės sistemos, asmeninio kompiuterio arba serverio 20 pavyzdys, susidedantis iš centrinio procesoriaus 21, sistemos atminties 22 ir sistemos magistralės 23, kurioje yra įvairių sistemos komponentų, įskaitant atmintį, susietą su centriniu procesoriumi. 21. Sistemos magistralė 23 yra įgyvendinta kaip bet kuri iš ankstesnio technikos žinoma magistralės struktūra, turinti savo ruožtu magistralės atmintį arba magistralės atminties valdiklį, periferinę magistralę ir vietinę magistralę, galinčią susieti su bet kokia kita magistralės architektūra. Sistemos atmintyje yra tik skaitymo atmintis (ROM) 24, laisvosios kreipties atmintis (RAM) 25. Pagrindinėje įvesties / išvesties sistemoje (BIOS) 26 yra pagrindinės procedūros, užtikrinančios informacijos perdavimą tarp asmeninio kompiuterio 20 elementų, pvz. įkeliant operacines sistemas naudojant ROM 24.

Savo ruožtu asmeniniame kompiuteryje 20 yra standusis diskas 27 duomenims skaityti ir rašyti, magnetinio disko įrenginys 28, skirtas nuskaityti ir įrašyti išimamus magnetinius diskus 29, ir optinis įrenginys 30, skirtas nuskaityti ir įrašyti į išimamus optinius diskus 31, pvz. CD-ROM, DVD-ROM ir kitos optinės laikmenos. Kietasis diskas 27, magnetinio disko įrenginys 28, optinis įrenginys 30 yra atitinkamai prijungti prie sistemos magistralės 23 per standžiojo disko sąsają 32, magnetinio disko sąsają 33 ir optinio disko sąsają 34. Diskai ir susijusios kompiuterinės laikmenos yra nepastovios priemonės kompiuterio instrukcijoms, duomenų struktūroms, programų moduliams ir kitiems asmeninio kompiuterio duomenims saugoti 20.

Šiame aprašyme atskleidžiamas sistemos, kuri naudoja standųjį diską 27, išimamą magnetinį diską 29 ir išimamą optinį diską 31, įgyvendinimą, tačiau reikia suprasti, kad kitų tipų kompiuterinės laikmenos 56, galinčios saugoti duomenis Kompiuteriu nuskaitoma forma (kietojo kūno diskai, „flash“ atminties kortelės, skaitmeniniai diskai, laisvosios kreipties atmintis (RAM) ir kt.), kurios yra prijungtos prie sistemos magistralės 23 per valdiklį 55.

Kompiuteris 20 turi failų sistemą 36, kurioje saugoma įrašyta operacinė sistema 35, taip pat papildomas programinės įrangos programas 37, kitus programų modulius 38 ir programos duomenis 39. Vartotojas turi galimybę įvesti komandas ir informaciją į asmeninį kompiuterį 20 per įvesties įrenginiai (klaviatūra 40, manipuliatorius "pelė" 42). Gali būti naudojami kiti įvesties įrenginiai (neparodyta): mikrofonas, vairasvirtė, žaidimų konsolė, skaitytuvas ir kt. Tokie įvesties įrenginiai paprastai yra prijungiami prie kompiuterio sistemos 20 per nuoseklųjį prievadą 46, kuris savo ruožtu yra prijungtas prie sistemos magistralės, bet gali būti prijungtas ir kitais būdais, pavyzdžiui, per lygiagretųjį prievadą, žaidimų prievadą arba universaliąją nuosekliąją magistralę (USB). . Monitorius 47 arba kitokio tipo rodymo įrenginys taip pat yra prijungtas prie sistemos magistralės 23 per sąsają, pvz., vaizdo adapterį 48. Be monitoriaus 47, asmeniniame kompiuteryje gali būti įrengti kiti išoriniai išvesties įrenginiai (neparodyta), pvz., garsiakalbiai, spausdintuvas ar pan.

Asmeninis kompiuteris 20 gali veikti tinklinėje aplinkoje, naudodamas tinklo ryšį su kitu ar daugiau nuotolinių kompiuterių 49. Nuotolinis kompiuteris (ar kompiuteriai) 49 yra tie patys asmeniniai kompiuteriai arba serveriai, kuriuose yra daugumą arba visus anksčiau paminėtus elementus. asmeninio kompiuterio 20 aprašyme, parodytame 6 pav. Kompiuterių tinkle taip pat gali būti kitų įrenginių, pvz., maršrutizatorių, tinklo stočių, lygiaverčių įrenginių ar kitų tinklo mazgų.

Tinklo jungtys gali sudaryti vietinį tinklą (LAN) 50 ir platųjį tinklą (WAN). Tokie tinklai naudojami įmonių kompiuterių tinkluose, įmonių vidiniuose tinkluose ir, kaip taisyklė, turi prieigą prie interneto. LAN arba WAN tinkluose asmeninis kompiuteris 20 yra prijungtas prie vietinio tinklo 50 per tinklo adapterį arba tinklo sąsają 51. Naudojant tinklus, asmeninis kompiuteris 20 gali naudoti modemą 54 ar kitas priemones bendrauti su plačiuoju tinklu. pavyzdžiui, internetas. Modemas 54, kuris yra vidinis arba išorinis įrenginys, yra prijungtas prie sistemos magistralės 23 per nuoseklųjį prievadą 46. Reikėtų paaiškinti, kad tinklo jungtys yra tik pavyzdinės ir neprivalo reprezentuoti tikslios tinklo konfigūracijos, t. iš tikrųjų yra ir kitų būdų užmegzti ryšį techninėmis ryšio priemonėmis iš vieno kompiuterio į kitą.

Apibendrinant, reikia pažymėti, kad aprašyme pateikta informacija yra pavyzdžiai, kurie neriboja šio išradimo apimties, apibrėžtos formule. Šios srities specialistas supras, kad gali būti ir kitų šio išradimo įgyvendinimo variantų, atitinkančių šio išradimo dvasią ir taikymo sritį.

1. Metodas, skirtas emuliuoti sistemos funkcijų iškvietimus apeiti emuliacijos atsakomąsias priemones, kai:
a) gauti vykdomąjį failą į emuliatoriaus įvestį;
b) patikrinkite reikalavimo emuliuoti sistemos funkcijų iškvietimus sąlygas;
c) jei tenkinama bent viena iš aukščiau nurodytų sąlygų, naudojama sistemos iškvietimo emuliacija;
d) emuliuoti vykdomojo failo vykdymą pagal nuoseklų instrukcijų vykdymą;
e) kai aptinkamas sistemos funkcijos iškvietimas, emuliacijos procesas perjungiamas į sistemos skambučio emuliaciją;
f) emuliuoti sistemos funkcijos iškvietimą žemo lygio skambučių grandinės forma.

2. Būdas pagal 1 punktą, b e s i s k i r i a n t i s tuo, kad reikalaujama emuliuoti sistemos funkcijų iškvietimus, yra ta, kad vykdomojo failo emuliacija būtų baigta greitai.

3. Būdas pagal 1 punktą, b e s i s k i r i a n t i s tuo, kad sistemos funkcijų iškvietimų emuliacijos reikalavimo sąlyga yra ta, kad emuliacijos laikas nėra ribojamas.

4. Būdas pagal 1 punktą, kuriame reikalavimo emuliuoti iškvietimus į sistemos funkcijas sąlyga yra informacijos apie nežinomą failą iš antivirusinės programos nebuvimas.

5. Būdas pagal 1 punktą, b e s i s k i r i a n t i s tuo, kad nuoseklus komandų vykdymas yra bent jau visų šuoliukų, tiek sąlyginių, tiek besąlyginių, vykdymas, taip pat įvairių funkcijų iškvietimas vykdomajame faile.

6. Būdas pagal 1 punktą, besiskiriantis tuo, kad žemo lygio skambutis yra surinkimo kalbos nurodymas.

7. Būdas pagal 1 punktą, besiskiriantis tuo, kad žemo lygio skambutis yra nuoseklus visų susijusių sistemos funkcijų iškvietimas.

8. Būdas pagal 1 punktą, besiskiriantis tuo, kad baigia emuliuoti sistemos funkcijų iškvietimą pereinant į branduolio režimą.

Panašūs patentai:

Išradimas yra susijęs su kompiuterine technologija. Techninis rezultatas – pagerinti kenkėjiškų programų aptikimo kokybę.

MEDŽIAGA: išradimas yra susijęs su viešojo rakto sertifikatų tikrinimo priemonėmis. Techninis rezultatas – sumažinti neteisėtos prieigos tikimybę.

Išradimas yra susijęs su automatinio saugos įrankių konfigūravimo sritimi vykdant taikomąsias programas. Techninis rezultatas yra sumažinti skaičiavimo išteklius, kuriuos sunaudoja saugos įrankis vykdant taikomąją programą, neprarandant saugumo kokybės.

Išradimas yra susijęs su žinučių filtravimo sistemomis ir metodais pagal vartotojo ataskaitas. Techninis šio išradimo rezultatas yra identifikuoti žinutes, priklausančias skirtingoms kategorijoms, pvz., žinučių, kuriose yra šiukšlių, kategorija, remiantis vartotojų ataskaitomis.

Išradimas yra susijęs su vartotojų prieigos prie informacijos, susijusios su skrydžių ir orlaivių sauga, teisių valdymo sistema. Techninis rezultatas – užtikrinti vartotojų, turinčių prieigą prie nurodytos informacijos, identifikavimą. Siūloma prieigos prie lėktuve esančių taikomųjų programų ir duomenų valdymo sistema bei šios sistemos naudojamas metodas, taip pat orlaivis, kuriame yra ši sistema. Prieigos prie orlaivyje esančio naudotojo informacijos teisių valdymo sistemoje yra bent vienas identifikavimo įrenginys (10), sukonfigūruotas nuskaityti informaciją apie vartotojo tapatybę, esančią jo asmeninėje kortelėje, ir lėktuvo kompiuteris (1). , kuriame yra prieigos teisių valdymo priemonės (11), sukonfigūruotos vartotojo autentifikavimui ir prieigos prie laive esančios informacijos prieigos teisėms, priklausomai nuo vartotojo tapatybės, nustatyti. 3 n. ir 7 z.p. f-ly, 2 lig.

Išradimas yra susijęs su informacijos apdorojimo įrenginiu ir būdu bei įrašymo laikmena su programa informacijos apdorojimo įrenginiui valdyti. Techninis rezultatas – padidinti duomenų apdorojimo greitį. Įrenginys sukonfigūruotas nuskaityti taikomąją programą iš įrašymo laikmenos, kurioje taikomoji programa tarnauja kaip turinys, pirmasis šakninis sertifikatas, išduotas taikomajai programai, ir antrasis šakninis sertifikatas, išduotas prieš išduodant pirmąjį šakninį sertifikatą taikomajai programai. yra įrašytas, ir vykdyti taikomąją programą, kur informacijos apdorojimo įrenginys apima: generavimo priemones, skirtas suformuoti saugojimo įrenginyje pirmąjį aplanką, skirtą duomenims, kuriuos apdoroja taikomoji programa, saugoti, pirmasis aplankas susietas su pirmuoju šakniniu sertifikatu; ir kopijavimo priemones, skirtas antrajame aplanke esantiems duomenims nukopijuoti į pirmąjį aplanką, antrasis aplankas susietas su antruoju šakniniu sertifikatu tuo atveju, jei saugojimo įrenginyje yra antrasis aplankas. 3 n. ir 7 z.p. f-ly, 19 lig.

Išradimas yra susijęs su kriptografinio slaptojo rakto paskirstymu tarp siunčiančių ir priimančių šalių. Techninį rezultatą sudaro galimybė automatiškai reguliuoti apsaugą ir laukimo laiką generuojant kriptografinį slaptąjį raktą, nustatant iteracijų skaičių, kurio pagrindu nustatomas pranešimų, kuriais bus keičiamasi generuojant kriptografinį slaptąjį raktą, skaičius. kontroliuojamas. Įrenginyje, skirtame saugiai priimti ir perduoti duomenis, yra raktų generavimo valdiklis ir iteracijų skaičiui užtikrinti skirtas įrenginys. 4 n. ir 7 z.p. f-ly, 17 lig.

Išradimas yra susijęs su vaizdo siuntimo įrenginiu, kuriam reikalingas autentifikavimas, norint naudoti įrenginį ir jo teikiamą funkciją. Techninis rezultatas yra galimybė nustatyti autentifikavimo informacijos paveldėjimą siunčiant vaizdus ir rodyti autentifikavimo informacijos įvedimo ekraną pagal paskirties nustatymo būdą. Šiuo tikslu vaizdo siuntimo įrenginyje atliekamas pirmasis vartotojo autentifikavimo apdorojimas, saugoma autentifikavimo informacija, naudojama tuo atveju, kai atliekamas pirmasis autentifikavimo apdorojimas, ir nustatoma paskirties vieta, į kurią siuntimo priemonės siunčia vaizdo duomenis. naudojant įvairius taškų nustatymo metodus. Tada atliekamas antrojo autentifikavimo apdorojimas, reikalingas siuntėjui siųsti vaizdo duomenis į nustatytą paskirties vietą, ir nustatoma, ar naudoti autentifikavimo informaciją, saugomą informacijos saugojimo priemonėse, kai atliekamas antrojo autentifikavimo apdorojimas. apie paskirties vietos nustatymo metodą. 3 n. ir 5 z.p. f-ly, 17 lig.

MEDŽIAGA: išradimas yra susijęs su belaidžiu ryšiu, būtent su prieigos kontrolės kliento saugaus perdavimo būdu. Techninis rezultatas – padidinti saugumą. Būdas apima vartotojo prieigos kontrolės kliento užklausą iš belaidžio tinklo, kur užklausa yra susieta su pirmuoju patvirtinimo sertifikatu; vartotojo prieigos kontrolės kliento ir antrojo patvirtinimo sertifikato gavimą, kur pirmąjį ir antrąjį patvirtinimo sertifikatus išduoda patikimas subjektas; ir vartotojo prieigos kontrolės kliento saugojimą saugiame elemente, jei galioja antrasis patvirtinimo sertifikatas; kur vartotojo prieigos kontrolės klientas yra saugomas atskirame segmente iš daugelio segmentų, sudarančių saugų elementą, o vėlesni saugomo vartotojo prieigos valdymo kliento modifikacijos gali būti atliekami tik naudojant antrąjį patvirtinimo sertifikatą; ir prieiga prie belaidžio tinklo yra apribota (i) vartotojo prieigos valdymo kliento prieiga ir (ii) vartotojo prieigos valdymo klientų užklausomis. 3 n. ir 19 z.p. f-ly, 8 lig.

Išradimas yra susijęs su kompiuterinėmis technologijomis ir telekomunikacijomis, skirtas kompiuterinės informacijos apsaugos problemoms spręsti. Techninis išradimo rezultatas – padidinti greitį didinant lygiagretumo laipsnį. Tris transformacijos ratus galima atlikti pagal x, y, z ašis. Pirmajame rate atliekamos N 2D sluoksnių kaitos transformacijos L x0, L x1, ..., L x(N-1); antrajame ture atliekamos N dvimatės sluoksnių keitimo transformacijos L y0 , L y1 , ..., Ly (N-1); trečiajame rate atliekamos N dvimatės sluoksnių kaitos transformacijos L z0, L z1, ..., L z(N-1). 5 iliustr., 1 tab.

Išradimas yra susijęs su matavimo rezultatų valdymo priemonėmis. Techninis rezultatas yra sutrumpinti informacijos apdorojimo laiką. Pateikite biologinės informacijos matavimo prietaiso autentifikavimo perdavimą, susijusį su biologinės informacijos matavimo prietaiso autentifikavimu. POVEIKIS: biologinės informacijos matavimo prietaiso autentifikavimo poreikio nustatymas. Užtikrinkite, kad valdymo įrenginys gautų ir su autentifikavimu susijusią informaciją, ir biologinę informaciją iš biologinės informacijos matavimo įrenginio. Įsitikinkite, kad valdymo įrenginys atlieka autentifikavimą pagal informaciją, susijusią su autentifikavimu. Ryšio priemonėmis gauta biologinė informacija saugoma saugojimo priemonėse, nepriklausomai nuo to, ar autentifikavimo priemonių autentifikavimo rezultatas yra teigiamas, ar neigiamas. Teisėta autentifikavimo informacija perduodama ryšio priemonėmis, jei nustatoma, kad autentifikavimas reikalingas priemonėmis, leidžiančiomis nustatyti, ar autentifikavimas reikalingas, o netikra informacija perduodama ryšio priemonėmis, jei nustatoma, kad autentifikavimo nereikia. 3 n. ir 2 z.p. f-ly, 10 lig.

Išradimas susijęs su priemonėmis elektroninio tinklo operacijų saugumui užtikrinti. Techninis rezultatas – padidinti elektroninių operacijų internetu saugumą. Atlikti sustiprinto (daugiafaktorinio) klientų ir serverių autentifikavimo, maišos, pasirašymo elektroniniu parašu ir klientų bei serverių elektroninio parašo tikrinimo procedūras. Atlikite kliento programinės įrangos aplinkos nuskaitymo procesą, po kurio jie priima sprendimus dėl sistemos klientų aptiktų programinės įrangos aplinkos spragų kritiškumo ar nekritiškumo. Dalyvių sąveikos metu archyvuojamos klientų ir serverių sprendimų kopijos, pasirašytos jų elektroniniais parašais dėl seansų tarp klientų ir serverių tęsimo ar uždarymo. 2 n. ir 6 z.p. f-ly, 1 lig.

Išradimas yra susijęs su kriptografinės transformacijos elektroniniame komponente atlikimo būdu ir aparatu. Techninis rezultatas – ryšių užmezgimo su slaptažodžio autentifikavimo saugumas didinant kriptografinės transformacijos efektyvumą. Metodo taškas P(X,Y) gaunamas remiantis parametru t elipsinėje kreivėje, kuri tenkina išraišką Y2=f(X), ir remiantis daugianariais X1(t), X2(t), X3. (t) ir U(t ), tenkinančios lygybę f(X1(t)).f(X2(t)).f(X3(t))=U(t)2 Fq, kai q=3 mod 4, tada gaunama parametro t reikšmė ir nustatykite tašką P, atlikdami poveiksmius, kuriuose (i) apskaičiuokite X1=X1(t), X2=X2(t), X3=X3(t) ir U=U (t), (ii) jei elementas f(X1) .f(X2) yra kvadratas, patikrinkite, ar elementas f(X3) yra Fq kvadratas, o jei taip, apskaičiuokite kvadratinę šaknį elementas f(X3), kad gautumėte tašką P(X3), (iii) priešingu atveju patikrinkite, ar elementas f(X1) yra kvadratas, ir jei taip, apskaičiuokite f(X1) kvadratinę šaknį, kad gautumėte tašką P( X1), (iv) kitaip apskaičiuokite elemento f(X2) kvadratinę šaknį, kad gautumėte tašką P(X2), tada šis taškas P naudojamas kriptografinėje programoje. 2 n. ir 6 z.p. f-ly, 3 lig.

Išradimų grupė yra susijusi su priemonėmis, skirtomis valdyti bent vieną procesą, vykstantį su sauga susijusioje sistemoje. Techninis rezultatas – galimybė lanksčiai ir apibendrinti su saugumu susijusių sistemų sertifikavimą. Šiuo tikslu siūlomas su sauga susijusios sistemos stebėjimo metodas, naudojant stebėjimo įrenginį, skirtą su sauga susijusiai sistemai stebėti, kai: pasirenkamas pirmasis procesas iš daugybės stebėjimo įrenginyje vykdomų procesų, generuojamas skambinti pagal pirmąjį procesą; skambučio perkėlimas į įrenginį, kuris sudaro bent jau su saugumu susijusios sistemos dalį; antrojo proceso parinkimą iš daugybės procesų, vykdomų su saugumu susijusioje sistemoje; apdorojimo rezultato apskaičiavimą antruoju procesu, taikant bent vieną iš anksto nustatytą funkciją skambučiui; per antrąjį procesą perdirbimo rezultato perkėlimas į pirmąjį procesą; pirmojo proceso metu apdorojamo rezultato, apskaičiuoto antrojo proceso, patikrinimą su pirmojo proceso apskaičiuotu apdorojimo rezultatu, apdorojimo rezultatu, apskaičiuotu pirmojo proceso, taikant tą pačią bent vieną iš anksto nustatytą funkciją; ir su sauga susijusios sistemos įvertinimas kaip saugios būsenos, jei pirmojo proceso metu apskaičiuotas apdorojimo rezultatas ir antrojo proceso metu apskaičiuotas apdorojimo rezultatas sutampa. 3 n. ir 8 z.p. f-ly, 2 lig.

Išradimas yra susijęs su sistemos funkcijų iškvietimų emuliavimo būdais, siekiant apeiti emuliacijos atsakomąsias priemones. Techninis rezultatas yra galimybė emuliuoti iškvietimus į sistemos funkcijas. Rezultatas pasiekiamas naudojant sistemos funkcijų iškvietimų emuliavimo metodą, siekiant apeiti emuliacijos atsakomąsias priemones, šis metodas apima šiuos veiksmus: vykdomojo failo gavimas kaip įvestis į emuliatorių; tikrinti reikalavimo emuliuoti sistemos funkcijų iškvietimus sąlygas; jei įvykdoma bent viena iš aukščiau nurodytų sąlygų, naudojama sistemos iškvietimo emuliacija; emuliuoti vykdomojo failo vykdymą pagal nuoseklų instrukcijų vykdymą; kai aptinkamas sistemos funkcijos iškvietimas, emuliacijos proceso perjungimas į sistemos skambučio emuliaciją; sukurti sistemos funkcijų skambučio emuliaciją žemo lygio skambučių grandinės forma. 7 w.p. f-ly, 6 ill., 1 tab.

Išradimas yra susijęs su sistemos funkcijų iškvietimų emuliavimo būdais, siekiant apeiti emuliacijos atsakomąsias priemones. Techninis rezultatas yra galimybė emuliuoti iškvietimus į sistemos funkcijas. Rezultatas pasiekiamas naudojant sistemos funkcijų iškvietimų emuliavimo metodą, siekiant apeiti emuliacijos atsakomąsias priemones, šis metodas apima šiuos veiksmus: vykdomojo failo gavimas kaip įvestis į emuliatorių; tikrinti reikalavimo emuliuoti sistemos funkcijų iškvietimus sąlygas; jei įvykdoma bent viena iš aukščiau nurodytų sąlygų, naudojama sistemos iškvietimo emuliacija; emuliuoti vykdomojo failo vykdymą pagal nuoseklų instrukcijų vykdymą; kai aptinkamas sistemos funkcijos iškvietimas, emuliacijos proceso perjungimas į sistemos skambučio emuliaciją; sukurti sistemos funkcijų skambučio emuliaciją žemo lygio skambučių grandinės forma. 7 w.p. f-ly, 6 ill., 1 tab.

RF patento 2514141 brėžiniai

Techninė sritis

Išradimas yra susijęs su antivirusiniais sprendimais, o tiksliau su sistemos funkcijų iškvietimų emuliavimo būdais, siekiant apeiti emuliacijos atsakomąsias priemones.

moderniausias

Šiuolaikinių programų, įskaitant kenkėjiškas programas, kodas yra sudėtingas instrukcijų rinkinys: šuoliai, skambučiai, kilpos ir pan. Pažymėtina, kad vykdomųjų failų sudėtingumas nuolat didėja, o tai siejama su populiarėjančiu aukšto lygio programavimo kalbomis, taip pat su kompiuterinės įrangos ir operacinių sistemų komplikavimu. Tai taikoma tiek patikimoms, tiek kenkėjiškoms programoms. Kenkėjiškos programos gali atlikti daugybę tipiškų veiksmų, pvz., pavogti slaptažodžius ir kitus konfidencialius naudotojo duomenis, įskaitant kompiuterį, esantį botnete, skirtą DDoS atakoms vykdyti arba šlamšto siuntimui, blokuoti tinkamą sistemos veikimą turto prievartavimo tikslais ir kitus neigiamus padarinius. ir nepageidaujami veiksmai vartotojo požiūriu .

Vienas iš galimų kenkėjiškų programų tyrimo būdų yra naudoti emuliatorių, kurį antivirusinė programa naudoja programos elgsenai analizuoti. Yra įvairių emuliavimo būdų. Vienas iš jų – programinis procesoriaus, atminties ir kitų įrenginių modeliavimas, sukuriant virtualias procesoriaus registrų, atminties ir procesoriaus instrukcijų rinkinio kopijas. Taigi programos instrukcijos vykdomos ne tikrame procesoriuje, o jo virtualioje kopijoje, o iškvietimai į sistemos API funkcijas emuliuoja ir siunčia atgal emuliuotą funkcijos rezultatą.

Norėdami kovoti su programos kodo emuliacija, kenkėjiškų programų kūrėjai naudoja įvairius triukus, kurie gali būti pagrįsti apribojimais, susijusiais su emuliacijos procesu ir emuliatoriaus įdiegimu antivirusiniuose sprendimuose. Vienas iš šių būdų yra įtraukti į programos kodą daug instrukcijų, kurios neturi kenkėjiško komponento, tačiau jas mėgdžioti reikia laiko. Atsižvelgiant į tai, kad laikas, skirtas programos kodui emuliuoti, yra ribotas, kad nesukeltų vartotojo nepasitenkinimo (paprastai šis laikas gali trukti kelias sekundes), emuliacijos procesas gali sustoti prieš pradedant vykdyti tikrai kenksmingą kodą. Vienas būdas kovoti su šiuo anti-emuliacijos metodu yra aprašytas US7603713, kuris veikia vykdydamas daugybę instrukcijų tikrame procesoriuje, o tai žymiai pagreitina nežinomų programų emuliavimo procesą, siekiant pasiekti patį kenksmingiausią kodą. Kitas metodas, atskleistas paraiškoje US20110225655, mano, kad galimybė apibrėžti programą kaip įtartina, jei ji neutralizuoja emuliaciją. Šis metodas pagrįstas tuo, kad saugi (teisėta) programa paprastai rodo įspėjimą apie emuliatoriaus vykdymo negalimą, o kenkėjiška programa ramiai nutraukia vykdymą arba staigiai pakeičia vykdymo vektorių (logiką).

Kitas būdas kovoti su emuliacija yra nustatyti faktą, kad programa šiuo metu veikia emuliatoriuje, o ne tikroje operacinėje sistemoje. Reikėtų pažymėti, kad emuliatorius sukuria tik ribotą virtualią procesoriaus, kompiuterio komponentų ir operacinės sistemos (OS) kopiją su sutrumpintomis galimybėmis, nes visiškai atkurti visų to paties procesoriaus ar sistemos API funkcijų galimybių neįmanoma. dėl kelių priežasčių: , nedokumentuotų funkcijų buvimas, didelis našumo sumažėjimas naudojant tokį emuliatorių. Taigi, kenkėjiškų programų kūrėjai gali naudoti šias gudrybes, kad nustatytų vykdymo faktą emuliuotoje aplinkoje:

Nedokumentuotos arba retai naudojamos API funkcijos iškvietimas.

Vykdykite procesoriaus instrukcijų rinkinį ir patikrinkite, pavyzdžiui, vėliavėlių rinkinį. Nepakankamai tiksliai emuliuojant procesoriaus komandas, daugelio vėliavėlių reikšmės gali skirtis nuo tų, kurios būtų nustatytos vykdant procesoriuje.

API funkcijos vykdymo teisingumo tikrinimas. Patikra gali būti labai sudėtinga ir apimti neteisingo skambučio grąžintų klaidų kodų analizę arba įdiegtų procesorių registrų patikrinimą.

Ieškokite atmintyje konkrečių baitų. Pavyzdžiui, MZ antraštės paieška baitas po baito atmintyje įkėlus kernel32.dll proceso pradžioje. „Vista 64“ versijoje kernel32.dll naudoja 64 KB lygiavimą, o sritis tarp antraštės ir pirmosios sekcijos nebus susieta su proceso adreso erdve, o jei bandysite ją pasiekti, bus pateikta išimtis. Jei nebuvo užregistruota jokia išimtis, bus iškviesta standartinė OS išimčių tvarkyklė ir procesas bus nutrauktas.

Pastarasis metodas naudojamas visur, nes jis leidžia nuolat apeiti esamus emuliatorius, todėl neįmanoma įdiegti teisingos kiekvienos API funkcijos emuliacijos dėl aukščiau aprašytų priežasčių.

Ankstesnės technikos ir galimybių, atsirandančių jas sujungiant vienoje sistemoje, analizė leidžia gauti naują rezultatą ir pagerinti kenkėjiškų programų aptikimo kokybę naudojant sistemos funkcijų iškvietimų emuliavimo metodą, siekiant apeiti emuliacijos atsakomąsias priemones.

Išradimo esmė

Techninis šio išradimo rezultatas yra sudaryti galimybę emuliuoti iškvietimus į sistemos funkcijas.

Pagal vieną iš įgyvendinimo variantų yra numatytas sistemos funkcijų iškvietimų emuliavimo emuliacijos atsakomąsias priemones apeiti metodas, kuriame: kaip įvestis į emuliatorių gaunamas vykdomasis failas; tikrinti reikalavimo sąlygą emuliuoti sistemos funkcijų iškvietimus; jei įvykdoma bent viena iš aukščiau nurodytų sąlygų, naudojama sistemos iškvietimo emuliacija; emuliuoti vykdomojo failo vykdymą pagal nuoseklų instrukcijų vykdymą; kai aptinkamas sistemos funkcijos iškvietimas, emuliacijos proceso perjungimas į sistemos skambučio emuliaciją; sukurti sistemos funkcijų skambučio emuliaciją žemo lygio skambučių grandinės forma.

Pagal vieną iš konkrečių įgyvendinimo parinkčių, reikalavimo emuliuoti iškvietimus į sistemos funkcijas sąlyga yra greitas vykdomojo failo emuliavimo užbaigimas.

Pagal kitą konkretų įgyvendinimo variantą sistemos funkcijų iškvietimų emuliacijos reikalavimo sąlyga yra ta, kad emuliacijos laikas neribojamas.

Pagal kitą konkrečią įgyvendinimo parinktį, reikalavimo emuliuoti sistemos funkcijų iškvietimus sąlyga yra informacijos apie nežinomą failą iš antivirusinės programos nebuvimas.

Pagal vieną iš konkrečių įgyvendinimo variantų, nuoseklus komandų vykdymas yra bent jau visų perėjimų, tiek sąlyginių, tiek besąlyginių, vykdymas, taip pat įvairių vykdomojo failo funkcijų iškvietimas.

Pagal kitą konkretų įgyvendinimą žemo lygio iškvietimas yra asamblėjos kalbos instrukcija.

Pagal kitą privataus įgyvendinimo variantą žemo lygio skambutis yra nuoseklus visų susijusių sistemos funkcijų iškvietimas.

Pagal vieną iš privačių diegimo parinkčių sistemos funkcijos iškvietimo emuliacija nutraukiama perjungiant į branduolio režimą.

Trumpas brėžinių aprašymas

Papildomi šio išradimo objektai, savybės ir pranašumai paaiškės perskaičius šį išradimo įgyvendinimo varianto aprašymą su nuoroda į pridedamus brėžinius, kuriuose:

1 paveiksle parodytas klasikinio emuliatoriaus pavyzdys, kai apdorojamas API funkcijos iškvietimas.

2 parodytas API funkcijos vykdymo Windows operacinėje aplinkoje pavyzdys.

3 iliustruoja API funkcijų iškvietimų emuliavimo būdą pagal šį išradimą.

4 parodyta sistema, kurioje šis išradimas gali būti įgyvendintas.

Fig. 5 iliustruoja šio išradimo įgyvendinimo būdą.

6 yra bendros paskirties kompiuterinės sistemos, kurioje šis išradimas gali būti įgyvendintas, pavyzdys.

Išradimo įgyvendinimo variantų aprašymas

Šio išradimo objektai ir ypatumai, šių objektų ir savybių pasiekimo būdai paaiškės remiantis pavyzdiniais įgyvendinimo variantais. Tačiau šis išradimas neapsiriboja žemiau pateiktais pavyzdiniais įgyvendinimo variantais, bet gali būti įgyvendintas įvairiomis formomis. Aprašymo esmė yra ne kas kita, o konkrečios detalės, pateiktos siekiant padėti šios srities specialistui visapusiškai suprasti išradimą, o šis išradimas yra apibrėžtas tik pridedamų apibrėžties ribose.

1 paveiksle parodytas klasikinio emuliatoriaus pavyzdys, kai apdorojamas API funkcijos iškvietimas. Kai API funkcija iškviečiama, kai programa veikia tikroje OS, OS atlieka daugybę veiksmų, o tai lemia sudėtinga OS vidinė architektūra. Schematiškai iškvietus API funkciją, procesoriuje įvykdoma daug instrukcijų, po kurių iškviestos API funkcijos darbo rezultatas grąžinamas į programą. Kai emuliatorius veikia, iškvietus API funkciją, kelių instrukcijų skaičius nevykdomas taip pat, kaip tikroje OS, o programa grąžina imituotą API funkcijos rezultatą. Pavyzdžiui, bandant sukurti failą, emuliatorius grąžins žymeklį į virtualų failą. Tačiau nepaisant bendro darbo rezultato (pavyzdžiui, žymeklio grąžinimas į failą), iškviestos API funkcijos darbo rezultatas gali skirtis OS ir emuliatoriuje, o tai yra dėl to, kad skambinant API funkcija, pavyzdžiui, kai kurie procesoriaus registrai gali būti pakeisti, o tai neatsispindės, kai emuliatorius veikia. Šis neatitikimas gali būti naudojamas siekiant užkirsti kelią emuliacijai ir, visų pirma, kenkėjiškoms programoms.

2 parodytas API funkcijos vykdymo Windows operacinėje sistemoje pavyzdys. „WriteFile“ buvo pasirinktas kaip API funkcijos pavyzdys. 210 bloke Windows programa (pvz., Microsoft Word arba Notepad) bando įrašyti duomenis į failą, iškviesdama atitinkamą Win32 API funkciją WriteFile, esančią Kernel32.dll. Tada 220 veiksme NtWriteFile iškviečiamas Ntdll.dll (t. y. visos susijusios sistemos funkcijos iškviečiamos iš eilės), o tai savo ruožtu veda į spąstus 230 veiksme ir ieškoma atitinkamos tvarkyklės (tai atlieka KiSystemService funkcija Ntoskrnl.dll ), kai skambinama NtWriteFile. Atkreipkite dėmesį, kad šis procesas vyksta vartotojo režimu, o iškvietus pertraukimą, įvyksta perėjimas į branduolio režimą. 240 veiksme NtWriteFile iškviečiamas tiesiogiai į Ntoskrnl.dll, o failas rašomas tiesiogiai 250 veiksme (čia taip pat paslėpta informacija, susijusi su failų sistemos tvarkyklės veikimu). Remiantis tuo, tampa aišku, kad šiuolaikinėje OS iškvietus nors vieną API funkciją, įvyksta daugybė operacijų (t. y. žemesnio lygio įvykių, atsižvelgiant į pačią OS struktūrą), įskaitant programos vykdymo perėjimą iš vartotojo režimas į branduolio režimą. Svarstant šias operacijas komandų vykdymo asamblėjos kalba požiūriu, tampa aišku, kad labai sunku teisingai emuliuoti API funkcijos iškvietimą, nes reikia atsižvelgti į visų procesoriaus registrų būseną ir visų vidinės OS struktūros.

Kaip jau minėta, kenkėjiškų programų kūrėjai gali naudoti įvairias parinktis, kad patikrintų API funkcijos teisingumą, įskaitant centrinio procesoriaus registrų patikrinimą, kad nustatytų, ar programa veikia emuliatoriuje. Taigi, siekiant apeiti (tiksliau, išlaikyti) tokį patikrinimą, šis išradimas siūlo visų iškviestų funkcijų vykdymo būdą pagal mašininio kodo instrukcijas.

3 iliustruoja API funkcijų iškvietimų emuliavimo būdą pagal šį išradimą. 310 veiksme įvyksta klasikinis programos emuliavimas, kaip, pavyzdžiui, „Notepad“ programos emuliacijos atveju (nedidelis programos kodo fragmentas rodomas derinant ją „OllyDbg“ derinimo priemonėje):

Tokios instrukcijos kaip MOV, PUSH, SUB, LEA ir panašiai bus emuliuojamos tokios, kokios yra, t.y. emuliuojant surinkėjo instrukcijas naudojant virtualų procesorių emuliatoriuje. Kai įvyksta API funkcijos iškvietimas (kaip nustatyta 320 bloke), pvz

tada tokio skambučio emuliacija vyks pagal mašinos instrukcijas (330 veiksmas), atsižvelgiant į visus įdėtuosius skambučius, kaip parodyta, pavyzdžiui, 2 pav. Kai vykdant API funkciją bus pasiektas perėjimas į branduolio režimą, kuris bus tikrinamas 340 žingsnyje, emuliacija bus perkelta į standartinį (įprastą, klasikinį) režimą, t.y. tolimesni kiekvienos komandos iškvietimai nebus apdorojami nuosekliai, o bus grąžintas tik funkcijos iškvietimo rezultatas. Po to metodas grįžta iš 350 žingsnio į 310 veiksmą tolimesniam emuliavimui.

4 parodyta sistema, kurioje šis išradimas gali būti įgyvendintas. Tarkime, kad vartotojo kompiuteryje yra nežinomas vykdomasis failas 410, kurį reikia emuliuoti, kad būtų nustatyta, ar jis gali būti kenkėjiškas. Reikėtų paaiškinti, kad vykdomasis failas turėtų būti suprantamas ne tik kaip vykdomieji failai, turintys PE arba ELF formatą, bet ir kiti failai, kuriuose yra įvairaus kodo, pvz., .class arba .jar failai (skirti vykdyti Java virtualioje mašinoje), įvairūs scenarijaus failai , pvz., .vbs ir daugelis kitų. Pačiame faile 410 yra instrukcijos 420, kurių nuoseklioji emuliacija atkuria failo 410 vykdymą. Atkreipkite dėmesį, kad nuoseklioji emuliacija apima visų šuoliukų, tiek sąlyginių, tiek besąlyginių, vykdymą, taip pat įvairių vykdomojo failo 410 funkcijų iškvietimą. emuliacija, kiekviena instrukcija 420 patenka į komandų analizavimo modulio 430 įvestį emuliatoriuje 405, o šis modulis nustato, ar instrukcija yra sistemos API funkcijos iškvietimas ir, jei atsakymas teigiamas, emuliatorius 405 emuliuoja iškvietimą į ši funkcija (rodoma kaip 450) žemesnio lygio įvykių grandinės forma, kaip parodyta, pavyzdžiui, 2 pav. (ty 210-230 žingsniai 2 pav. prieš įjungiant branduolio režimą). Kitu atveju emuliatorius 405 emuliuoja savo vykdymą kaip klasikinės emuliacijos dalį (rodomas kaip 440), t.y. grąžina sumodeliuotą funkcijos rezultatą (t. y. neimmuliuojant visų 2 pav. pažymėtų etapų). Kai kuriais atvejais API funkcijos iškvietimo nurodymą galima emuliuoti, kaip tai būtų daroma klasikinės 440 emuliacijos atveju. Pavyzdžiui, funkcija URLDownloadToFile žemo lygio atvaizde turi sudėtingą iškvietimų į TCP grandinę. / IP tvarkyklę, ir tokios grandinės nuoseklusis emuliavimas gali būti nepraktiškas. Viename įgyvendinime sistemos skambučio emuliacijos naudojimo poreikį nustato komandų analizatorius 430, pavyzdžiui, remiantis žinoma informacija apie tam tikrų skambučių emuliacijos greitį.

Fig. 5 iliustruoja šio išradimo įgyvendinimo būdą. 510 bloke bandoma emuliuoti vykdomąjį failą 410 vartotojo kompiuteryje. 520 bloke patikrinama, ar reikia emuliuoti sistemos API funkcijas.

Reikalavimai emuliuojančioms sistemos funkcijoms:

Pradinė emuliacija baigta labai greitai ir neįspėjus vartotojo. Paprastai tai reiškia, kad programa aptinka emuliatoriaus veikimo faktą, o vartotojui apie tai nepraneša, o tai dažniausiai daro pavojingos programos.

Būtina atlikti gilesnę vykdomojo failo 410 emuliaciją. Taip atsitinka, jei su vykdomuoju failu 410 anksčiau nebuvo susidurta, o tai reiškia, kad nėra informacijos apie nežinomą failą iš antivirusinės programos, kurioje yra emuliatorius. veikia (t. y. ji nėra klasifikuojama ir nėra antivirusinių programų duomenų bazėse kaip kenkėjiška ar saugi programa).

Klasikinis emuliatorius aptiko metodus, kaip kovoti su emuliacija, pvz.: API funkcijų iškvietimas su akivaizdžiai neteisingais parametrais, po to patikrinama klaidos būsena (kodas), tikrinami nepastovūs registrai iškvietus API funkcijas, nuskaitomas sistemos modulių turinys, bandoma aptikti debugger sistemoje, taip pat iškviečia standartinius metodus, skirtus aptikti vykdymą virtualioje mašinoje (RedPill).

Savaiminio išpakavimo ar savisaugos metodų (pakuotojų ir apsauginių priemonių) aptikimas.

Poreikis emuliuoti potencialiai kenkėjišką programą kaip vartotojo OS dalį su visomis bibliotekomis ir interpretatoriais (pvz., .NET arba Java). Be to, siūlomas emuliacijos metodas leidžia emuliuoti paketinius ir valdymo failus, pvz., paketinį failą (paketinį failą) su plėtiniu .bat arba .cmd, powershell scenarijus, reg failus, skirtus duomenims įvesti į registrą, ir kitų tipų failus, kurį paleidus vartotojo kompiuteryje pateikiamas vykdymo kodas.

Emuliacijos laikas nėra ribojamas griežtomis ribomis, pavyzdžiui, tai gali būti dešimtys sekundžių ar net kelios minutės ar daugiau, kas būdinga pirmos programos analizės metu.

Įvykdžius bent vieną iš šių reikalavimų, 530 bloke emuliuojami sistemos iškvietimai 450, kad būtų emuliuojamos API funkcijos pagal mašinos instrukcijas, kaip parodyta 4 pav. Kitu atveju 540 veiksme naudojama tik klasikinė emuliacija 440. Naudojant tokius reikalavimus, antivirusinėje programoje galima lanksčiau žiūrėti į emuliacijos procesą, nesukeliant vartotojo nepasitenkinimo, kuris yra susijęs su papildoma apkrova dėl būtinybės emuliuoti API funkcijas. pagal mašinos instrukcijas.

6 parodytas bendros paskirties kompiuterinės sistemos, asmeninio kompiuterio arba serverio 20 pavyzdys, susidedantis iš centrinio procesoriaus 21, sistemos atminties 22 ir sistemos magistralės 23, kurioje yra įvairių sistemos komponentų, įskaitant atmintį, susietą su centriniu procesoriumi. 21. Sistemos magistralė 23 yra įgyvendinta kaip bet kuri iš ankstesnio technikos žinoma magistralės struktūra, turinti savo ruožtu magistralės atmintį arba magistralės atminties valdiklį, periferinę magistralę ir vietinę magistralę, galinčią susieti su bet kokia kita magistralės architektūra. Sistemos atmintyje yra tik skaitymo atmintis (ROM) 24, laisvosios kreipties atmintis (RAM) 25. Pagrindinėje įvesties / išvesties sistemoje (BIOS) 26 yra pagrindinės procedūros, užtikrinančios informacijos perdavimą tarp asmeninio kompiuterio 20 elementų, pvz. įkeliant operacines sistemas naudojant ROM 24.

Savo ruožtu asmeniniame kompiuteryje 20 yra standusis diskas 27 duomenims skaityti ir rašyti, magnetinio disko įrenginys 28, skirtas nuskaityti ir įrašyti išimamus magnetinius diskus 29, ir optinis įrenginys 30, skirtas nuskaityti ir įrašyti į išimamus optinius diskus 31, pvz. CD-ROM, DVD-ROM ir kitos optinės laikmenos. Kietasis diskas 27, magnetinio disko įrenginys 28, optinis įrenginys 30 yra atitinkamai prijungti prie sistemos magistralės 23 per standžiojo disko sąsają 32, magnetinio disko sąsają 33 ir optinio disko sąsają 34. Diskai ir susijusios kompiuterinės laikmenos yra nepastovios priemonės kompiuterio instrukcijoms, duomenų struktūroms, programų moduliams ir kitiems asmeninio kompiuterio duomenims saugoti 20.

Šiame aprašyme atskleidžiamas sistemos, kuri naudoja standųjį diską 27, išimamą magnetinį diską 29 ir išimamą optinį diską 31, įgyvendinimą, tačiau reikia suprasti, kad kitų tipų kompiuterinės laikmenos 56, galinčios saugoti duomenis Kompiuteriu nuskaitoma forma (kietojo kūno diskai, „flash“ atminties kortelės, skaitmeniniai diskai, laisvosios kreipties atmintis (RAM) ir kt.), kurios yra prijungtos prie sistemos magistralės 23 per valdiklį 55.

Kompiuteris 20 turi failų sistemą 36, kurioje saugoma įrašyta operacinė sistema 35, taip pat papildomas programinės įrangos programas 37, kitus programų modulius 38 ir programos duomenis 39. Vartotojas turi galimybę įvesti komandas ir informaciją į asmeninį kompiuterį 20 per įvesties įrenginiai (klaviatūra 40, manipuliatorius "pelė" 42). Gali būti naudojami kiti įvesties įrenginiai (neparodyta): mikrofonas, vairasvirtė, žaidimų konsolė, skaitytuvas ir kt. Tokie įvesties įrenginiai paprastai yra prijungiami prie kompiuterio sistemos 20 per nuoseklųjį prievadą 46, kuris savo ruožtu yra prijungtas prie sistemos magistralės, bet gali būti prijungtas ir kitais būdais, pavyzdžiui, per lygiagretųjį prievadą, žaidimų prievadą arba universaliąją nuosekliąją magistralę (USB). . Monitorius 47 arba kitokio tipo rodymo įrenginys taip pat yra prijungtas prie sistemos magistralės 23 per sąsają, pvz., vaizdo adapterį 48. Be monitoriaus 47, asmeniniame kompiuteryje gali būti įrengti kiti išoriniai išvesties įrenginiai (neparodyta), pvz., garsiakalbiai, spausdintuvas ar pan.

Asmeninis kompiuteris 20 gali veikti tinklinėje aplinkoje, naudodamas tinklo ryšį su kitu ar daugiau nuotolinių kompiuterių 49. Nuotolinis kompiuteris (ar kompiuteriai) 49 yra tie patys asmeniniai kompiuteriai arba serveriai, kuriuose yra daugumą arba visus anksčiau paminėtus elementus. asmeninio kompiuterio 20 aprašyme, parodytame 6 pav. Kompiuterių tinkle taip pat gali būti kitų įrenginių, pvz., maršrutizatorių, tinklo stočių, lygiaverčių įrenginių ar kitų tinklo mazgų.

Tinklo jungtys gali sudaryti vietinį tinklą (LAN) 50 ir platųjį tinklą (WAN). Tokie tinklai naudojami įmonių kompiuterių tinkluose, įmonių vidiniuose tinkluose ir, kaip taisyklė, turi prieigą prie interneto. LAN arba WAN tinkluose asmeninis kompiuteris 20 yra prijungtas prie vietinio tinklo 50 per tinklo adapterį arba tinklo sąsają 51. Naudojant tinklus, asmeninis kompiuteris 20 gali naudoti modemą 54 ar kitas priemones bendrauti su plačiuoju tinklu. pavyzdžiui, internetas. Modemas 54, kuris yra vidinis arba išorinis įrenginys, yra prijungtas prie sistemos magistralės 23 per nuoseklųjį prievadą 46. Reikėtų paaiškinti, kad tinklo jungtys yra tik pavyzdinės ir neprivalo reprezentuoti tikslios tinklo konfigūracijos, t. iš tikrųjų yra ir kitų būdų užmegzti ryšį techninėmis ryšio priemonėmis iš vieno kompiuterio į kitą.

Apibendrinant, reikia pažymėti, kad aprašyme pateikta informacija yra pavyzdžiai, kurie neriboja šio išradimo apimties, apibrėžtos formule. Šios srities specialistas supras, kad gali būti ir kitų šio išradimo įgyvendinimo variantų, atitinkančių šio išradimo dvasią ir taikymo sritį.

REIKALAVIMAS

1. Metodas, skirtas emuliuoti sistemos funkcijų iškvietimus apeiti emuliacijos atsakomąsias priemones, kai:

a) gauti vykdomąjį failą į emuliatoriaus įvestį;

b) patikrinkite reikalavimo emuliuoti sistemos funkcijų iškvietimus sąlygas;

c) jei tenkinama bent viena iš aukščiau nurodytų sąlygų, naudojama sistemos iškvietimo emuliacija;

d) emuliuoti vykdomojo failo vykdymą pagal nuoseklų instrukcijų vykdymą;

e) kai aptinkamas sistemos funkcijos iškvietimas, emuliacijos procesas perjungiamas į sistemos skambučio emuliaciją;

f) emuliuoti sistemos funkcijos iškvietimą žemo lygio skambučių grandinės forma.

2. Būdas pagal 1 punktą, b e s i s k i r i a n t i s tuo, kad reikalaujama emuliuoti sistemos funkcijų iškvietimus, yra ta, kad vykdomojo failo emuliacija būtų baigta greitai.

3. Būdas pagal 1 punktą, b e s i s k i r i a n t i s tuo, kad sistemos funkcijų iškvietimų emuliacijos reikalavimo sąlyga yra ta, kad emuliacijos laikas nėra ribojamas.

4. Būdas pagal 1 punktą, kuriame reikalavimo emuliuoti iškvietimus į sistemos funkcijas sąlyga yra informacijos apie nežinomą failą iš antivirusinės programos nebuvimas.

5. Būdas pagal 1 punktą, b e s i s k i r i a n t i s tuo, kad nuoseklus komandų vykdymas yra bent jau visų šuoliukų, tiek sąlyginių, tiek besąlyginių, vykdymas, taip pat įvairių funkcijų iškvietimas vykdomajame faile.

6. Būdas pagal 1 punktą, besiskiriantis tuo, kad žemo lygio skambutis yra surinkimo kalbos nurodymas.

7. Būdas pagal 1 punktą, besiskiriantis tuo, kad žemo lygio skambutis yra nuoseklus visų susijusių sistemos funkcijų iškvietimas.

8. Būdas pagal 1 punktą, besiskiriantis tuo, kad baigia emuliuoti sistemos funkcijų iškvietimą pereinant į branduolio režimą.

Redaktoriaus pasirinkimas
Laukinės ponios užrašais Yra daug gėlių Gražių, diskretiškų. Bet man patinka visas paprastasis gyslotis. Gal jam bus sunkiau...

) masę nešanti lėto branduolio grupė. Laukdama gegužinės kelionės po šalį, PARTIJA savo lyderiui uždavė klausimų apie kūrybiškumą ir ne tik. Ekskursija po...

Baltarusijos prezidentas pasiūlė Seime svarstyti klausimą dėl pamokų pradžios ne 8, o 9 val.. „Valan...

Kiekvienam tėvui, kurio vaikas lankė mokyklą, svarbu žinoti, kokiomis taisyklėmis vadovaujasi ugdymo įstaiga renkantis krūvį...
Atsakymas: Visagalis Alachas pasakė: „Iš tiesų, Alachas yra Aukštas, Didysis“. Moterys 34
Spalio 12 dieną Rusijoje į apyvartą išleisti nauji 200 ir 2000 rublių banknotai. Ant jų pavaizduoti miestai yra Sevastopolis ir ...
Čia renkami kai kurių neįprastų varlių ir rupūžių rūšių atstovai Varliagyviai – stuburiniai gyvūnai, gyvenantys tiek vandenyje, tiek ant...
Apibrėžimas. Laikoma, kad funkcijos vienaskaitos taškas yra izoliuotas, jei tam tikroje šio taško kaimynystėje yra analitinė funkcija (t. y....
Daugeliu atvejų, nagrinėjant (C) formos eilučių koeficientus, galima nustatyti, kad šios eilutės suartėja (galbūt neįskaitant atskirų taškų) ...