Metoda pro emulaci volání systémových funkcí za účelem obejití antiemulačních opatření. Co je emulace? Emulační program

Asi před šesti měsíci jsem byl dotázán asi takto: „Používám velký framework, který spouští určitou funkci na základě akce uživatele. Chci, aniž bych změnil kód této funkce, spustit svůj kód v případě volání této funkce." Praxe není zdaleka nejlepší, událost volání funkce neexistuje, jen jsem si zkroutil prst na spánku a řekl, že to je hrozný kód, neměli byste to dělat, a to je prostě nemožné.

Před pár dny, když jsem za relativně teplého zimního večera, netypického pro Oděsu, mířil domů, napadla mě netypická myšlenka: „Co když zkusím udělat to, co Bogdan požádal před šesti měsíci? Když jsem dorazil domů, zapnul jsem počítač a během pár minut jsem udělal, co jsem měl na mysli. V první řadě mě zajímalo, jak by se vestavěné metody chovaly, kdyby byly přepsány, a zda je poté možné nějak zavolat jejich předchozí stav před přepsáním. Věděl jsem, že pokud je objekt předefinován, pak odkazy na něj nebudou zničeny a zachovají si stejný vzhled. Pokud jde o vestavěné funkce, existovaly pochybnosti. Ukazuje se, že je to možné.

S největší pravděpodobností nikdy nebudu muset takový nástroj použít, ale čistě hypoteticky možná někdo bude mít za úkol vysledovat volání konkrétní funkce a obdržet zprávu o každém volání, která se skládá z:

  1. Výsledek provedení
  2. Argumenty prošly
  3. Kontext volání (co to je při volání)
  4. Počet volání funkcí po vytvoření handleru
(Tento seznam plně odpovídá argumentům předávaným do handleru)

addCallListener = function(func, callback)( var callNumber = 0; return function())( var args = .slice.call(arguments); var result; try ( result = func.apply(this, arguments); callNumber++; ) catch (e) ( callback(e, args, this, callNumber); throw e; ) callback(result, args, this, callNumber); return result; ) )

Velmi jednoduché a krátké, že?

Poté předefinujeme některé funkce následovně:

SomeFunct = addCallListener(someFunct, function(result, args, self, callNumber)( //Udělat něco )); // nebo Constructor.prototype.method = addCallListener(Constructor.prototype.method, function(result, args, self, callNumber)( //Udělej něco ));

Je zřejmé, že by to mělo být „viditelné“ v části kódu, kde se to děje.

Několik příkladů
Chcete-li spustit příklady, musíte mít otevřenou konzoli (v Chrome ji nazvěte Ctrl+Shift+i).

Děkuji soudruhům z fóra javascript.ru za kritiku a dodatky.

UPD
Funkci jsem mírně rozšířil: nyní místo jednoho zpětného volání je jako druhý argument předán objekt

  1. před (voláno před spuštěním funkce)
  2. úspěch (volá se, pokud byla funkce úspěšně dokončena)
  3. chyba (pokud došlo k chybě)
  4. po (v každém případě voláno, bez ohledu na úspěch)
Každému psovodu je předán objekt
  1. sebe (kontext)
  2. jméno (název funkce)
  3. stav ("chyba" nebo "úspěch")
  4. successNumber (počet úspěšných hovorů)
  5. errorNumber (počet volání s chybou)
  6. výsledek (výsledek, pokud existuje)
  7. chyba (chyba, pokud existuje)
Kromě toho je funkce addCallListener nyní součástí objektu konstruktoru Function, aby se zabránilo zasažení okna nebo procesu.

Zde můžete forkovat a testovat.

Cíle

  • Vytvoření nového mikroprocesoru/mikrokontroléru. V tomto případě jsou příkazy tohoto procesoru vykonávány pomocí emulátoru (programu nebo zařízení).
  • Potřeba také spouštět software napsaný pro jiné zařízení nebo operační systém.
  • Testování programů napsaných pro různé systémy.

Hardwarová a softwarová emulace

V případě hardwarově-softwarového komplexu je emulátor speciální elektronické zařízení vyrobené ve formě desky.

Softwarová emulace

Emulace umožňuje, aby počítačový program běžel na platformě (architektura počítače a/nebo operační systém), která se liší nebo v některých případech shoduje s platformou, pro kterou byl původně napsán. Emulace se také nazývá samotný proces tohoto provádění. Na rozdíl od simulace, která pouze reprodukuje chování programu, cílem emulace je přesně simulovat stav simulovaného systému za účelem provedení původního strojového kódu.

Při používání vysokoúrovňových jazyků někdy za účelem zachování výkonu spustitelného programu namísto emulace portují programy do nového prostředí. V tomto případě jsou hardwarově závislé části kódu přepsány.

Jedním z oblíbených použití emulace je spouštění her napsaných pro automaty nebo videoherní konzole na osobním počítači.

Poměrně kompletní emulace nějaké hardwarové platformy vyžaduje extrémní přesnost, až na úroveň jednotlivých hodinových cyklů, nezdokumentované funkce a dokonce chyby implementace. To je důležité zejména u takových modelů klasických domácích strojů, jako je Commodore 64, ZX Spectrum, jejichž software je vysoce závislý na rozhodnutí programátora. K volbě konkrétního řešení dochází za účelem optimalizace (z hlediska velikosti nebo rychlosti provádění programu), kterou využívají například programátoři her, ale i nadšenci do demoscén. Takové programy jsou často založeny na nezdokumentovaných schopnostech procesoru nebo operačního systému.

Naproti tomu některé jiné platformy zaznamenaly poměrně malé využití přímého přístupu k hardwaru. V tomto případě stačí poskytnout určitou úroveň kompatibility, aby bylo zajištěno, že systémová volání emulovaného systému budou převedena na volání běžícího systému.

Emulátor se obvykle skládá z několika modulů odpovědných za různé podsystémy emulovaného počítače. Emulátor se nejčastěji skládá z:

  • emulátor nebo simulátor centrálního procesoru;
  • modul paměťového subsystému emulující RAM a ROM;
  • modul nebo moduly pro emulaci různých vstupních/výstupních zařízení.

Systémová sběrnice obvykle není emulována z důvodů jednoduchosti nebo výkonu a virtuální periferie přistupuje přímo k modulu CPU a paměťovému modulu.

viz také

Poznámky

Literatura

  • A. Aganičev, D. Panfilov, M. Plavič, O. Polyanský. Softwarový a hardwarový komplex pro ladění MP systémů založených na mikrokontrolérech rodiny MC68HC11 od MOTOROLA
  • Shagurin I., Brodin V., Kalinin L., Tolstov Yu., Petrov S., Isenin I., Eidelman S., Vanyulin V. Nástroje pro navrhování a ladění řídicích systémů na bázi Motorola MK.

Odkazy


Nadace Wikimedia. 2010.

Synonyma:

Podívejte se, co je „emulace“ v jiných slovnících:

    Napodobování provozu jednoho systému pomocí jiného bez ztráty funkčnosti nebo zkreslení výsledků. Emulace se provádí softwarově a/nebo hardwarově. Viz také: Realizační finanční slovník Finam... Finanční slovník

    emulace- Napodobování fungování jednoho zařízení prostřednictvím jiného zařízení nebo zařízení počítače, ve kterém simulační zařízení vnímá stejná data, provádí stejný program a dosahuje stejného výsledku jako ... ... Technická příručka překladatele

    - [Angličtina] emulace konkurence, rivalita] rivalita, soutěživost, touha někoho překonat. Slovník cizích slov. Komlev N.G., 2006... Slovník cizích slov ruského jazyka

    Podstatné jméno, počet synonym: 3 konkurence (8) napodobování (25) rivalita (21) ... Slovník synonym

    emulace- a f. emulace f. Viz emulace... Historický slovník galicismů ruského jazyka

    emulace- emuliacija statusas T sritis automatika atitikmenys: angl. emulace vok. Emulace, fr rus. emulace, f pranc. émulation, f … Automatikos terminų žodynas

    Emulace- 53. Emulation Emulation Imitace fungování jednoho zařízení prostřednictvím jiného zařízení nebo zařízení počítače, ve kterém simulující zařízení vnímá stejná data, provádí stejný program a dosahuje stejného... ... Slovník-příručka termínů normativní a technické dokumentace

    G. Touha jeden druhého v něčem předčit; soupeření. Efraimův výkladový slovník. T. F. Efremová. 2000... Moderní výkladový slovník ruského jazyka od Efremové

    emulace- emulace a... Ruský pravopisný slovník

Cíle

  • Vytvoření nového mikroprocesoru/mikrokontroléru. V tomto případě jsou příkazy tohoto procesoru vykonávány pomocí emulátoru (programu nebo zařízení).
  • Potřeba také spouštět software napsaný pro jiné zařízení nebo operační systém.
  • Testování programů napsaných pro různé systémy.

Hardwarová a softwarová emulace

V případě hardwarově-softwarového komplexu je emulátor speciální elektronické zařízení vyrobené ve formě desky.

Softwarová emulace

Emulace umožňuje, aby počítačový program běžel na platformě (architektura počítače a/nebo operační systém), která se liší nebo v některých případech shoduje s platformou, pro kterou byl původně napsán. Emulace se také nazývá samotný proces tohoto provádění. Na rozdíl od simulace, která pouze reprodukuje chování programu, cílem emulace je přesně simulovat stav simulovaného systému za účelem provedení původního strojového kódu.

Při používání vysokoúrovňových jazyků někdy za účelem zachování výkonu spustitelného programu namísto emulace portují programy do nového prostředí. V tomto případě jsou hardwarově závislé části kódu přepsány.

Jedním z oblíbených použití emulace je spouštění her napsaných pro automaty nebo videoherní konzole na osobním počítači.

Poměrně kompletní emulace nějaké hardwarové platformy vyžaduje extrémní přesnost, až na úroveň jednotlivých hodinových cyklů, nezdokumentované funkce a dokonce chyby implementace. To je důležité zejména u takových modelů klasických domácích strojů, jako je Commodore 64, ZX Spectrum, jejichž software je vysoce závislý na rozhodnutí programátora. K volbě konkrétního řešení dochází za účelem optimalizace (z hlediska velikosti nebo rychlosti provádění programu), kterou využívají například programátoři her, ale i nadšenci do demoscén. Takové programy jsou často založeny na nezdokumentovaných schopnostech procesoru nebo operačního systému.

Naproti tomu některé jiné platformy zaznamenaly poměrně malé využití přímého přístupu k hardwaru. V tomto případě stačí poskytnout určitou úroveň kompatibility, aby bylo zajištěno, že systémová volání emulovaného systému budou převedena na volání běžícího systému.

Emulátor se obvykle skládá z několika modulů odpovědných za různé podsystémy emulovaného počítače. Emulátor se nejčastěji skládá z:

  • emulátor nebo simulátor centrálního procesoru;
  • modul paměťového subsystému emulující RAM a ROM;
  • modul nebo moduly pro emulaci různých vstupních/výstupních zařízení.

Systémová sběrnice obvykle není emulována z důvodů jednoduchosti nebo výkonu a virtuální periferie přistupuje přímo k modulu CPU a paměťovému modulu.

viz také

Poznámky

Literatura

  • A. Aganičev, D. Panfilov, M. Plavič, O. Polyanský. Softwarový a hardwarový komplex pro ladění MP systémů založených na mikrokontrolérech rodiny MC68HC11 od MOTOROLA
  • Shagurin I., Brodin V., Kalinin L., Tolstov Yu., Petrov S., Isenin I., Eidelman S., Vanyulin V. Nástroje pro navrhování a ladění řídicích systémů na bázi Motorola MK.

Odkazy


Nadace Wikimedia. 2010.

Synonyma:
  • Andrey
  • Geofyzika

Podívejte se, co je „emulace“ v jiných slovnících:

    Emulace- napodobování provozu jednoho systému pomocí jiného bez ztráty funkčnosti a zkreslení výsledků. Emulace se provádí softwarově a/nebo hardwarově. Viz také: Realizační finanční slovník Finam... Finanční slovník

    emulace- Napodobování fungování jednoho zařízení prostřednictvím jiného zařízení nebo zařízení počítače, ve kterém simulační zařízení vnímá stejná data, provádí stejný program a dosahuje stejného výsledku jako ... ... Technická příručka překladatele

    EMULACE- [Angličtina] emulace konkurence, rivalita] rivalita, soutěživost, touha někoho překonat. Slovník cizích slov. Komlev N.G., 2006... Slovník cizích slov ruského jazyka

    emulace- podstatné jméno, počet synonym: 3 konkurence (8) napodobování (25) rivalita (21) ... Slovník synonym

    emulace- a f. emulace f. Viz emulace... Historický slovník galicismů ruského jazyka

    emulace- emuliacija statusas T sritis automatika atitikmenys: angl. emulace vok. Emulace, fr rus. emulace, f pranc. émulation, f … Automatikos terminų žodynas

    Emulace- 53. Emulation Emulation Imitace fungování jednoho zařízení prostřednictvím jiného zařízení nebo zařízení počítače, ve kterém simulující zařízení vnímá stejná data, provádí stejný program a dosahuje stejného... ... Slovník-příručka termínů normativní a technické dokumentace

    emulace- a. Touha jeden druhého v něčem předčit; soupeření. Efraimův výkladový slovník. T. F. Efremová. 2000... Moderní výkladový slovník ruského jazyka od Efremové

    emulace- emulace a... Ruský pravopisný slovník

Emulace je kopie původního systému, která může fungovat na jiném počítači nebo hardwaru. Nejjednodušším příkladem je emulace disku pomocí známého programu DaemonTools. Podívejme se na tuto problematiku podrobněji. Ve skutečnosti, co je emulace, není těžké pochopit, k tomu je třeba si představit princip jejího fungování.

Počítačové inženýrství

Nejjednodušší je popovídat si o tom, jak simulace funguje na počítači, protože právě na počítačích, tabletech a dalších zařízeních se používá nejčastěji. Řekněme, že máte skenovací zařízení Canon a chcete emulovat práci HP. Je nainstalován speciální software a programy určené pro originální zařízení HP, které mohou bez problémů fungovat na stejném Canonu. Úplně stejná situace je u většiny licencovaných disků, které musí být během provozu přítomny v mechanice vašeho počítače nebo notebooku.

Vznikají tedy obrazy těchto disků, které slouží jako jakýsi licencovaný produkt. Takto je většina hráčů seznámena s tím, co je emulace. Ale hned je třeba poznamenat, že simulované zařízení bude fungovat o řád pomaleji.

Emulační program aneb co použít k vytvoření obrázku

V současnosti je jediným problémem, jaký program zvolit. Existuje jich obrovské množství a většina slušných možností je k dispozici online zdarma. Například DaemonTools je skutečně efektivní nástroj, který běží hladce a nezabere mnoho místa na vašem pevném disku. Tento typ softwaru umožňuje emulovat několik disků najednou, ve většině případů lze vytvořit 3-5 jednotek, což závisí na verzi programu. Rozhraní v ruském jazyce je poměrně jednoduché a srozumitelné i pro začátečníky. Je třeba přidat dříve vytvořený obrázek do hlavního okna a emulovat jej. Existují i ​​další dobré programy, např. GizmoDrive, Alcohol 52% atd. Přes velký výběr je princip fungování všech utilit přibližně stejný, hlavním cílem je, aby si systém myslel, že disk obsahuje skutečný, licencovaný disk.

Emulace disku: Stručný přehled GizmoDrive

Hlavním účelem nástroje je připojit soubory s příponou ISO. Navíc lze použít jiný formát, který vám vyhovuje. Utilita automaticky vytvoří mechaniku a vloží tam obrázek, který se zobrazí jako skutečný.K dispozici jsou vám zde nejoblíbenější rozšíření jako ISO, BIN, MDS, MDF a další. Za povšimnutí stojí i poměrně velké množství pohonů, maximálně 26 kusů. Pro zjednodušení vytváření obrázků je k dispozici speciální manažer, který pomůže i začátečníkovi pochopit práci. Gizmo také umožňuje uživateli vytvořit obraz GDrive pro emulaci pevného disku vašeho zařízení. Poskytuje dokonce kompresi, která zlepšuje nejen výkon, ale také úroveň zabezpečení souborů. V zásadě bude pochopení toho, co je emulace, spolu s tak jednoduchou utilitou, jako je GizmoDrive, extrémně jednoduché.

O výhodách imitace

Pokud se budeme bavit o emulaci disku, rozdíl nepoznáte. Výhodou je, že licencovaná hra nevyžaduje mechaniku, ale spíše jednoduché vytvoření image. Pokud máte exkluzivní vybavení na jedné platformě, pak pomocí kvalitního emulátoru můžete software používat na jiném počítači, notebooku apod. Dobrým příkladem je používání her určených pro Xbox na počítači. Nepodceňujte význam emulátorů v mediálním umění, kde jsou téměř všechny informace uloženy v digitálních formátech. Stojí za zmínku, že vytvoření obrazu umožňuje nejen chránit soubory před viry, ale také ušetřit místo na pevném disku. To je nesmírně důležité, pokud pracujete s velkým množstvím informací a pevný disk není gumový, má limit.

Klasifikace emulace

V dnešní době se téměř vždy používá hardwarová platforma. Je tu ale jeden důležitý bod – nejprve musíte získat nebo emulovat operační systém nebo hardware. To se provádí pouze jednou. V důsledku toho mají takové simulátory prakticky neomezený přístup k hardwaru. Často se jedná o běžné vrstvy kompatibility, které vám umožňují přístup k určitému softwaru nebo hardwaru. Opět platí, že pro operační systém Windows je to jedna vrstva, ale pro Linux je to úplně jiná.

Existuje také emulace matematického procesu, který používají vývojáři her. Liší se tím, že se používají nejpřesnější simulační programy (simulátory). V zásadě se zde můžete zastavit a přejít k další otázce. Jak vidíte, s ohledem na klasifikaci existuje pro běžného uživatele mnoho nejasností, se kterými se lze vypořádat pouze v praxi.

Simulovat stisky kláves

Pokud si chcete vytvořit vlastní widget pro správu zvukových souborů, budete muset použít emulaci kláves. V dnešní době se simulace často využívá při testování různých aplikací. Pokud máte program, který vám umožňuje vzdáleně ovládat váš audio systém, pak je to další důvod, proč použít emulátor.

Rád bych také poznamenal, že systémy jako „chytrá domácnost“ také zahrnují použití vzdáleného přístupu. Emulace stisku kláves může být v podstatě potřebná kdykoli a kdekoli, a proto je to mimořádně užitečná funkce. Zde je potřeba použít speciální kódy, které se od sebe liší v závislosti na použitém operačním systému. Jak vidíte, není zde nic těžkého, jediné, co musíte udělat, je cvičit.

Zkrátka můžete sedět v práci a ovládat svůj domácí počítač nebo několik jeho funkcí (něco jako dálkový ovladač, jen s větším dosahem). Budete však potřebovat připojení k internetu.

Něco málo o emulaci COM portu

Existují speciální programy, které vám umožňují simulovat zařízení umístěná ve vašem portu Com. Hlavním úkolem je práce s datovými balíčky. Nástroj je přizpůsobuje pomocí RS232, UPD a dalších formátů. Jak ukazuje praxe, emulaci portu Com používají vývojáři různých aplikací za účelem testování a kontroly jejich funkčnosti. Tato funkce je také mimořádně užitečná pro lidi pracující na síti, například pro síťové inženýry. Systémová integrace je také výrazně zjednodušena. Opět, zjednodušeně řečeno, můžete otestovat svůj systém nebo jakýkoli program, aniž byste měli v portu skutečné zařízení. V principu je emulace disku významově poněkud podobná, ale stále existují určité rozdíly. Pokud jste začátečník, doporučuje se použít nástroj COMPortDataEmulator. Rozhraní v ruštině a pohodlná navigace v nabídce vám pomohou rychle zjistit, co je co.

Několik důležitých bodů

Samozřejmě nemůžeme nezmínit emulaci zařízení běžících na Androidu, protože to je v poslední době velmi aktuální. Můžete použít různé programy, jako je Genymotion, který je docela jednoduchý, stejně jako stabilní a pohodlný. „Trik“ od výrobce je v tom, že je podporována grafika, což znamená zvýšený výkon.

Po instalaci nástroje je třeba jej nakonfigurovat a můžete začít pracovat. Emulace Androidu se na tomto zařízení příliš neliší od skutečné hry, takže většina uživatelů používá tento druh imitace. Při prvním spuštění programu se zobrazí zpráva, že neexistují žádná virtuální zařízení, takže je třeba vytvořit nové. Dále klikněte na Připojit a autorizujte svůj účet, který jste dříve vytvořili. Pak už není nic složitého, najděte si požadovanou hru a klikněte na Hrát.

Závěr

Zvažovali jsme tedy téměř vše, co s emulací alespoň nějak souvisí. Možná si všimnete, že tato věc je docela užitečná. I když vaše práce nevyžaduje použití simulace nebo simulace elektronických systémů, dříve nebo později se vám může velmi hodit.

Nyní již víte něco o tom, jak emulace volání funguje, co to je a jak ji používat. Hlavní věcí je pochopit princip fungování. Nezapomeňte, že předtím nebo něco podobného musíte zkontrolovat, zda váš počítač neobsahuje viry, protože malware může obraz zcela zničit. Po vypálení obrazu disk nevyhazujte, protože jej můžete ještě potřebovat.

V zásadě je to vše, co lze k tomuto tématu říci. Měli byste pochopit, co je emulace a proč je potřeba. Pokud se chystáte použít přijaté informace, začněte s jednoduchými programy, nejlépe v ruštině.