|
Rozšiřování jazyka YARA
Kender, Tomáš ; Zobal, Lukáš (oponent) ; Regéciová, Dominika (vedoucí práce)
Táto práca sa zaoberá problematikou vylepšení nástroja YARA slúžiaceho na definovanie vzorového chovania malvéru a následné vyhľadávanie na základe definovaných vlastností v súboroch za účelom detekcie malvéru v prehľadávaných súboroch. Zavádza nové syntaktické konštrukty jazyka na zápis vlastností, načrtáva nový spôsob vyhľadávania reťazca v behaviorálnych informáciach generovaných Cuckoo Sandboxom a vyhodnocuje dopady zmien. Pri riešení budeme pracovať so zápisom lexikálnych a syntaktických pravidiel jazyka, pridáme do YARY nový dátový typ pre dynamické pole, ale budeme sa venovať aj optimalizácii výkonu bajtkódu či implementácii nového bajtkódového príkazu. Výstupom práce je produkt, ktorý umožní malvérovým analytikom písať kratšie a ľahšie čitateľné pravidlá pre detekciu malvérov a skrátiť dobu skenovania behaviorálnych informácií.
|
|
Optimalizace velikosti bajtkódu Javy
Poncová, Vendula ; Smrčka, Aleš (oponent) ; Kočí, Radek (vedoucí práce)
Tato práce se zabývá optimalizací bajtkódu jazyka Java zhlediska jeho velikosti. Popisuje virtuální stroj Javy a formát jeho instrukčního souboru a uvádí přehled některých knihoven pro manipulaci sbajtkódem. Spomocí těchto knihoven byla provedena analýza vybraného vzorku dat a nalezeny sekvence instrukcí, které by bylo možné optimalizovat. Na základě výsledků analýzy byly navrhnuty a implementovány metody pro optimalizaci velikosti bajtkódu. Velikost bajtkódu zkoumaného vzorku dat se po aplikaci metod snížila o zhruba 25%.
|
|
Zpětný překladač jazyka Java
Žamberský, Zdeněk ; Heriban, Pavel (oponent) ; Roupec, Jan (vedoucí práce)
Práce se zabývá vytvořením zpětného překladače pro jazyk Java. Cílem zpětného překladače je co nejlépe rekonstruovat zdrojový kód jazyka Java z class souborů. V práci je nejdříve rozebírán jazyk Java jako takový, kompilace Javy a struktura souborů class (zkompilovaná podoba Javy). Je také přiblíženo fungování virtuálního stroje Javy a jeho instrukční sada. Poté se přejde k problematice zpětného překladu a popisu algoritmů navržených a použitých pro realizaci zpětného překladače. V práci jsou uvedeny příklady dekompilovaného kódu.
|
|
Disassembler mezikódu jazyka Java
Macháček, Ondřej ; Letko, Zdeněk (oponent) ; Fiedor, Jan (vedoucí práce)
Tato práce se zabývá popisem struktury mezikódu jazyka Java a disassemblováním instrukcí mezikódu jazyka Java. Součástí této práce je knihovna pro disassemblování souborů tříd jazyka Java. Knihovna umožňuje zobrazit veškeré disassemblované informace uložené v souboru tříd. Pro ukázku práce s knihovnou byla napsána i jednoduchá aplikace s grafickým uživatelským rozhraním.
|
|
Porovnání výkonnosti virtuálního stroje CACAO s HotSpot JVM
Malík, Nikolaj ; Janoušek, Vladimír (oponent) ; Kočí, Radek (vedoucí práce)
Cílem této práce je představit platformu Java a dva vybrané zástupce implementací virtuálních strojů (JVM). V první řadě bude představen rozšířený virtuální stroj JVM HotSpot, v druhé řadě jedna z alternativních variant, JVM CACAO. Práce popisuje vybrané prvky implementace obou strojů, kde uvedené informace jsou vhodné pro všechny, kdo se zabývají optimalizacemi běhu programů. Závěrečná část prezentuje výsledky porovnání vybraných oblastí výše zmíněných strojů z hlediska paměťové a časové náročnosti.
|
|
Preprocesor Java bytecode pro verifikační nástroje
Šafařík, Tomáš ; Parízek, Pavel (vedoucí práce) ; Hnětynka, Petr (oponent)
Nástroje J2BP a PANDA umožňují verifikovat zkompilované Java programy. V současné době tyto nástroje nejsou schopny správně zpracovat programy s určitými sekvencemi instrukcí JVM bytecodu. Tyto sekvence instrukcí jsme popsali a navrhli jejich transformace. Na základě těchto návrhů jsme implementovali novou aplikaci BytecodeTransformer. Tato aplikace transformuje zkompilované Java programy a nahrazuje v nich problematické sekvence instrukcí bytecodu. Díky tomu se tedy rozšířila množina programů, které nástroje J2BP a PANDA dokážou verifikovat. Dále jsme vyhodnotili aplikaci BytecodeTransformer prostřednictvím našich i cizích Java programů. Tyto testy ukázaly správnou funkcionalitu implementované aplikace. Powered by TCPDF (www.tcpdf.org)
|
|
Static data flow analysis for Java programs
Mečiar, Martin ; Zavoral, Filip (vedoucí práce) ; Kofroň, Jan (oponent)
Tato práce navrhuje metodologii JaBSSA určenou k ziskání zavislostí mezi vstu- py a výstupy Java programů za použití statické programové analýzy na byte- code Java programů. Metodologie JaBSSA je založená na konstrukci context- sensitive grafu volání analyzovaného programu a následnou konstrukci oriento- vaného grafu datových toků, kde uzly majíci specifická metadata reprezentují vstupy a výstupy analyzovaného programu a hrany představují datové toky mezi nimi v analyzovaném programu. Program na přiloženém CD obsahuje imple- mentaci pro metodologii JaBSSA, což slouží jako ověření navrhovaného konceptu. Příklady Java programů spolu se sadou testů, která generuje výsledky implemen- tace metodologie JaBSSA na příkladech, jsou součástí daného programu. Vyge- nerované výsledky slouží pro demonstraci schopností a nedostatků navrhovaného konceptu. 1
|
|
Porovnání výkonnosti virtuálního stroje CACAO s HotSpot JVM
Malík, Nikolaj ; Janoušek, Vladimír (oponent) ; Kočí, Radek (vedoucí práce)
Cílem této práce je představit platformu Java a dva vybrané zástupce implementací virtuálních strojů (JVM). V první řadě bude představen rozšířený virtuální stroj JVM HotSpot, v druhé řadě jedna z alternativních variant, JVM CACAO. Práce popisuje vybrané prvky implementace obou strojů, kde uvedené informace jsou vhodné pro všechny, kdo se zabývají optimalizacemi běhu programů. Závěrečná část prezentuje výsledky porovnání vybraných oblastí výše zmíněných strojů z hlediska paměťové a časové náročnosti.
|
|
Preprocesor Java bytecode pro verifikační nástroje
Šafařík, Tomáš ; Parízek, Pavel (vedoucí práce) ; Hnětynka, Petr (oponent)
Nástroje J2BP a PANDA umožňují verifikovat zkompilované Java programy. V současné době tyto nástroje nejsou schopny správně zpracovat programy s určitými sekvencemi instrukcí JVM bytecodu. Tyto sekvence instrukcí jsme popsali a navrhli jejich transformace. Na základě těchto návrhů jsme implementovali novou aplikaci BytecodeTransformer. Tato aplikace transformuje zkompilované Java programy a nahrazuje v nich problematické sekvence instrukcí bytecodu. Díky tomu se tedy rozšířila množina programů, které nástroje J2BP a PANDA dokážou verifikovat. Dále jsme vyhodnotili aplikaci BytecodeTransformer prostřednictvím našich i cizích Java programů. Tyto testy ukázaly správnou funkcionalitu implementované aplikace. Powered by TCPDF (www.tcpdf.org)
|
|
Optimalizace velikosti bajtkódu Javy
Poncová, Vendula ; Smrčka, Aleš (oponent) ; Kočí, Radek (vedoucí práce)
Tato práce se zabývá optimalizací bajtkódu jazyka Java zhlediska jeho velikosti. Popisuje virtuální stroj Javy a formát jeho instrukčního souboru a uvádí přehled některých knihoven pro manipulaci sbajtkódem. Spomocí těchto knihoven byla provedena analýza vybraného vzorku dat a nalezeny sekvence instrukcí, které by bylo možné optimalizovat. Na základě výsledků analýzy byly navrhnuty a implementovány metody pro optimalizaci velikosti bajtkódu. Velikost bajtkódu zkoumaného vzorku dat se po aplikaci metod snížila o zhruba 25%.
|