|
4 years ago | |
---|---|---|
img | 4 years ago | |
.gitignore | 4 years ago | |
.gitlab-ci.yml | 4 years ago | |
Makefile | 4 years ago | |
README.md | 4 years ago | |
abstract.tex | 4 years ago | |
abstract.xmpdata | 4 years ago | |
abstract_cz.tex | 4 years ago | |
baposter.cls | 4 years ago | |
bibliography.bib | 4 years ago | |
bibliography.tex | 4 years ago | |
bt_cover.pdf | 4 years ago | |
chap01.tex | 4 years ago | |
chap02.tex | 4 years ago | |
chap03.tex | 4 years ago | |
chap04.tex | 4 years ago | |
epilog.tex | 4 years ago | |
macros.tex | 4 years ago | |
poster.tex | 4 years ago | |
preface.tex | 4 years ago | |
thesis.tex | 4 years ago | |
thesis.xmpdata | 4 years ago | |
title.tex | 4 years ago |
README.md
Bachelor thesis
This repository contains sources to:
- thesis.pdf - The full bachelor thesis text.
- abstract.pdf - The thesis abstract extracted to separate document.
- abstract_cz.pdf - The thesis abstract in czech.
- poster.pdf - Poster to the thesis.
Abstract
Dynamic analysis aids in many software development tasks, such as debugging, program comprehension, and performance optimization. However, implementing a new dynamic analysis tool is a non-trivial tasks.
To simplify development of dynamic analyses, researchers at Charles University and Università della Svizzera italiana in Lugano have jointly developed the DiSL and ShadowVM frameworks, which raise the level of abstraction for analysis tool developers and provide a convenient programming model both for bytecode instrumentation and for analysis execution.
Even though those frameworks were successfully used to develop many different dynamic analyses, it turned out that the internal design of the original implementation of both frameworks made further development of new features, such as support for instrumentation-time reflection, extremely difficult.
Both frameworks provide a client and server part and while they are designed to be used together, the design prevents sharing of information between the two client parts and the two server parts. This not only increases the amount of data that need to be exchanged over network, but also makes configuration of all parts more difficult.
In this work we propose and implement a new architecture of the analysis suite so that the functionality the functionality of the DiSL and ShadowVM frameworks can be hosted by a single server accommodating multiple clients.
Build instructions
This repository contains all sources required to build a complete bachelor thesis. The only requirements are the make program and the working LaTeX installation in version at least 2018. The version is required by the pdfx package to build the valid PDF/A document.
Requirements
Simply run make
to build all targets, or make <target name>
, where
target name is one of the thesis.pdf, poster.pdf and so on.
Synopsis (CZ)
- Uvod
- Co je to disl a shvm
- Predchozi implementace a jeji slabiny
- Nova implementace a jeji prednosti
- Ukazkova analyza pomoci noveho serveru.
- Zaver aneb proc je to takhle lepsi.
Min hruba osnova
- Uvod
- Co je dynamicka analyza, ze je narocna atd
- Co je to disl & SHVM
- Co je to dynamicka analyza
- Jak se dela normalne (jako offline)
- Jak pri tom pomaha instrumentace.
- Jake jsou nesnaze pri realizaci soucasnymi nastroji
- Jak je prekonat a jak to dela DiSL
- Predchozi implementace
- V minule kapitole jsme videli
- Ted kdyz uz vime co je potreba, pojdme se podivat na to jak to bylo udelane. Dva servery, dva klienti, vsechno jeden build.xml
- DiSL server a klient.
- Jake udalosti obsluhovali
- Jaky meli sitovy model. To obnasi i protobuf.
- Jake zpravy posilali
- Introductory example
- SHVM server a klient.
- Jake udalosti obsluhovali
- Jaky meli sitovy model. Ze byl manualni a proc to stalo za houby.
- Jake zpravy posilali
- Introductory example
- Tady shrnout jake slabiny to teda dohromady melo, na konkretni upozornovat pri popisu.
- Nova implementace
- Cile (snadne na pouzivani, neposilani class bytes dvakrat [pak nezapomenout na to, jak to implikovalo slouceni agentu], jeden server). Tady zminit veci co s tim sly ruku v ruce, t.j. zbavit se konfigurace serveru pres properties, malicko robustnejsi protokol, rozdelit do vice modulu
- Co musel splnovat novy agent.
- O novem serveru
- Rekapitulace toho, jak to ted splnuje ty requirements.
- Ukazkova implementace analyzy s instrumentaci
- Co budeme analyzovat
- Jak k tomu pristoupime. Jak do toho zapojime DiSL a SHVM.
- Piseme analyzu
- Piseme instrumentaci.
- Spoustime
- Radujeme se :P
- Zaver
- Takze vidime ze to je super, ze to funguje a ze jsem to stihnul do 17. kvetna.
CHANGELOG
Prechod SHVM agenta na protocol buffers.
-
Prevedl SHVM server na protocol buffers.
-
Extrahoval balicek utils do samostatneho modulu
-
Pridal unit testy
-
Rozdelil projekt do modulu
-
Pridal build.xml zvlast do kazdeho modulu a rozdelil puvodni obri build.xml
-
Sloucil balicky v shvm a disl do mensiho poctu, takze ted muze byt min veci public
-
Udelal SHVM min staticky
-
Pridal do SHVM context aby se zmensila zavislost jednotlivych komponent na sobe a mohly byt nestaticke
-
Udelal CI
-
Udelal CI testovani paralelni
-
Doplnil spoustu komentaru
-
Mergnul fasttagging branch, cimz se mj. rozdelil agent do vice souboru
-
Odstranil race condition v SHVM agentovi.
-
Rozdelil SHVM object model od SHVM serveru.
-
Sloucil dva protocol buffers protokoly do jednoho.
-
Sloucil agenty
-
Vytvoril novy server.
-
Rozsiril server o request-id a response-id
-
Presunul DiSL network subsystem na SHVM pomoci asynchronich tasku, zavedl reciever thread.
-
Preorganizoval posilani udalosti tak, aby SHVM new-class prislo az po disl-instrumentation request.
-
Dovolil v nyni sloucenem klientovi vypnout shvm funkcionalitu.