You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
Vít Kabele bdc4019822
Clean up the poster
4 years ago
img Clean up the poster 4 years ago
.gitignore [WIP] 4 years ago
.gitlab-ci.yml CI validation 4 years ago
Makefile Clean up the poster 4 years ago
README.md Remove example and update readme 4 years ago
abstract.tex Abstracts fixed 4 years ago
abstract.xmpdata Template update. 4 years ago
abstract_cz.tex Abstracts fixed 4 years ago
baposter.cls Add poster 4 years ago
bibliography.bib Final changes 4 years ago
bibliography.tex Added images, quotes and translated 4 years ago
bt_cover.pdf Abstracts updated 4 years ago
chap01.tex Typo fixed 4 years ago
chap02.tex Typo fixed 4 years ago
chap03.tex Almost final version 🛠 (At least I hope so) 4 years ago
chap04.tex Final changes 4 years ago
epilog.tex Epilog updated 4 years ago
macros.tex Initial commit with template 4 years ago
poster.tex Clean up the poster 4 years ago
preface.tex Add first batch of comments to Chapter 1 4 years ago
thesis.tex Keywords updated 4 years ago
thesis.xmpdata Keywords updated 4 years ago
title.tex First chapter fixed 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)

  1. Uvod
  2. Co je to disl a shvm
  3. Predchozi implementace a jeji slabiny
  4. Nova implementace a jeji prednosti
  5. Ukazkova analyza pomoci noveho serveru.
  6. Zaver aneb proc je to takhle lepsi.

Min hruba osnova

  1. Uvod
    1. Co je dynamicka analyza, ze je narocna atd
  2. Co je to disl & SHVM
    1. Co je to dynamicka analyza
    2. Jak se dela normalne (jako offline)
    3. Jak pri tom pomaha instrumentace.
    4. Jake jsou nesnaze pri realizaci soucasnymi nastroji
    5. Jak je prekonat a jak to dela DiSL
  3. Predchozi implementace
    1. V minule kapitole jsme videli
    2. Ted kdyz uz vime co je potreba, pojdme se podivat na to jak to bylo udelane. Dva servery, dva klienti, vsechno jeden build.xml
    3. DiSL server a klient.
      1. Jake udalosti obsluhovali
      2. Jaky meli sitovy model. To obnasi i protobuf.
      3. Jake zpravy posilali
      4. Introductory example
    4. SHVM server a klient.
      1. Jake udalosti obsluhovali
      2. Jaky meli sitovy model. Ze byl manualni a proc to stalo za houby.
      3. Jake zpravy posilali
      4. Introductory example
    5. Tady shrnout jake slabiny to teda dohromady melo, na konkretni upozornovat pri popisu.
  4. Nova implementace
    1. 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
    2. Co musel splnovat novy agent.
    3. O novem serveru
    4. Rekapitulace toho, jak to ted splnuje ty requirements.
  5. Ukazkova implementace analyzy s instrumentaci
    1. Co budeme analyzovat
    2. Jak k tomu pristoupime. Jak do toho zapojime DiSL a SHVM.
    3. Piseme analyzu
    4. Piseme instrumentaci.
    5. Spoustime
    6. Radujeme se :P
  6. Zaver
    1. 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.