DynamoRIO - DynamoRIO
Vývojáři | Autoři DynamoRIO |
---|---|
První vydání | Červen 2002 |
Stabilní uvolnění | 7.0.17598[1] / 12. března 2018 |
Náhled verze | 7.0.0-RC1 / 3. února 2017 |
Úložiště | |
Operační systém | Android, Linux, Okna |
Plošina | AArch32, AArch64, IA-32, x86-64 |
Typ | Rámec přístrojové techniky, profiler |
Licence | BSD |
webová stránka | dynamorio.org |
DynamoRIO je Licence BSD dynamický binární instrumentace rámec pro rozvoj dynamická analýza programu nástroje. Terče DynamoRIO uživatelský prostor aplikace pod Android, Linux, a Okna operační systémy běžící na AArch32, IA-32, a x86-64 architektury instrukční sady.
DynamoRIO bylo původně vytvořeno jako dynamické binární optimalizační systém ale od té doby se používá pro bezpečnostní, ladicí a analytické nástroje. DynamoRIO vzniklo ve spolupráci mezi Hewlett Packard Optimalizační systém Dynamo a výzkumná skupina Runtime Introspection and Optimization (RIO)[2] na MIT; odtud kombinovaný název „DynamoRIO“. Poprvé byl veřejně vydán jako proprietární binární sada nástrojů v červnu 2002 a později byl v lednu 2009 otevřen s licencí BSD.
Přehled
DynamoRIO je zpracovat virtuální stroj který přesměrovává provádění programu z původního binárního kódu na kopii tohoto kódu. K této kopii se poté přidá přístrojové vybavení, které provádí činnosti požadovaného nástroje. V původním programu nejsou provedeny žádné změny, které není nutné nijak zvlášť připravovat. DynamoRIO funguje úplně na doba běhu a zpracovává starší kód, dynamicky načítané knihovny, dynamicky generovaný kód a automaticky se měnící kód.
DynamoRIO sleduje vše regulační tok zachytit celé provedení cílového programu. Toto monitorování zvyšuje režii, i když není k dispozici žádný nástroj. Průměrná režie DynamoRIO je 11 procent.[3]
Funkce
DynamoRIO API abstrahuje podrobnosti virtualizačního procesu a zaměřuje se na monitorování nebo úpravu proudu dynamického kódu programu. Lze vložit nástroj trampolíny do programu, který vyvolává akce nástroje v konkrétních bodech programu. Nástroj může také vložit vybavení na montážní jazyk úroveň, která poskytuje jemnou kontrolu nad akcemi a výkonem nástroje. DynamoRIO podporuje adaptivní optimalizace a adaptivní vybavení tím, že umožňuje nástroji kdykoli během provádění cílového programu odstranit nebo upravit jeho vybavení.
DynamoRIO vyvolá nástroj registrovaný zpětná volání v řadě společných bodů událostí programu, jako je vytváření podprocesů, načítání knihoven, systémová volání, signály nebo výjimky. Jeho API také umožňuje kontrolu knihoven programu a adresní prostor kromě svého kódu.
API a zpětná volání událostí DynamoRIO jsou navržena tak, aby byla multiplatformní a umožňovala fungování stejného kódu nástroje na Windows i Linux a na IA-32 a x86-64. DynamoRIO zajišťuje nástroj průhlednost izolováním zdrojů nástroje, například jeho zásobník, paměti a přístupu k souborům z programu, na kterém nástroj pracuje.
DynamoRIO obsahuje knihovny, které rozšiřují jeho API o poskytování tabulka symbolů obslužné programy pro přístup, zabalení a nahrazení funkcí a sledování adres paměti.
Nástroje
První nástroje vytvořené pro DynamoRIO se zaměřily na dynamickou optimalizaci.[4] Byla vytvořena řada výzkumných nástrojů pro různé účely, včetně kontrola pachu[5] a profilování.[6]
Program Shepherding
Aplikace DynamoRIO na pole zabezpečení vyústila v techniku nazvanou pastýřský program.[7] Programové ovčácké zařízení sleduje původ každé programové instrukce a regulační tok mezi pokyny, aby se zabránilo a bezpečnostní exploit od převzetí kontroly nad programem. V roce 2003 byla programová výroba ovcí komerčně uvedena pod značkou Paměťový firewall prevence narušení hostitele software v startupové společnosti s názvem Determina. Determinu získal VMware v srpnu 2007.[8]
Dr. Memory
Dr. Memory je open-source debugger paměti postaveno na DynamoRIO a vydáno pod Licence LGPL.[9] Dr. Memory sleduje přidělení paměti a přístupy do paměti pomocí stínová paměť. Detekuje programovací chyby související s pamětí, jako jsou přístupy neinicializované paměti, přístupy k uvolněné paměti, přetečení a podtečení haldy a úniky paměti. Jeho sada funkcí je podobná jako u Valgrind -na základě Memcheck nástroj, i když funguje na Windows i Linuxu a je dvakrát rychlejší než Memcheck.[10]
Viz také
Poznámky
- ^ „Vydání 7.0.17598“. 12. března 2018. Citováno 13. března 2018.
- ^ Projekt RIO: Runtime Introspection and Optimization
- ^ Transparentní dynamická instrumentace, obrázek 4
- ^ Infrastruktura pro adaptivní dynamickou optimalizaci
- ^ TaintTrace: Efektivní sledování toku s dynamickým binárním přepisováním
- ^ PiPA: Pipeline Profilování a analýza na vícejádrových systémech
- ^ Bezpečné provedení prostřednictvím programového pastýřství
- ^ VMware získává poskytovatele HIPS Determina
- ^ Dr. Memory: Debugger paměti pro Windows a Linux
- ^ Praktická kontrola paměti pomocí paměti Dr.
Reference
- Bruening, Derek (2004). Efektivní, transparentní a komplexní manipulace s běhovými kódy (Ph.D.). Massachusetts Institute of Technology.
- Derek Bruening; Timothy Garnett; Saman Amarasinghe (březen 2003). „Infrastruktura pro adaptivní dynamickou optimalizaci“. Sborník z mezinárodního sympozia o generování a optimalizaci kódu. San Francisco, Kalifornie, USA. 265–275.