Zaštita strojnog koda pomoću virtualizacije na x86 arhitekturi

Sažetak na hrvatskom: Osmišljen je novi instrukcijski skup koji se bazira na load-store arhitekturi. Ostvaren je virtualni stroj koji se temelji na novom instrukcijskom skupu, funkcionalnosti za dohvaćanje arhitektonskog stanja procesora prije izvršavanja virtualiziranih instrukcija i funkcionalnost...

Full description

Permalink: http://skupni.nsk.hr/Record/fer.KOHA-OAI-FER:50877/Details
Glavni autor: Drašković, Barbara (-)
Ostali autori: Vladimir, Klemo (Thesis advisor)
Vrsta građe: Drugo
Impresum: Zagreb, B. Drašković, 2019.
Predmet:
LEADER 04534na a2200229 4500
003 HR-ZaFER
008 160221s2019 ci ||||| m||| 00| 0 hr d
035 |a (HR-ZaFER)ferid6626 
040 |a HR-ZaFER  |b hrv  |c HR-ZaFER  |e ppiak 
100 1 |a Drašković, Barbara  |9 40150 
245 1 0 |a Zaštita strojnog koda pomoću virtualizacije na x86 arhitekturi :  |b diplomski rad /  |c Barbara Drašković ; [mentor Klemo Vladimir]. 
246 1 |a Machine Code Obfuscation Through Virtualization on the x86 Architecture  |i Naslov na engleskom:  
260 |a Zagreb,  |b B. Drašković,  |c 2019. 
300 |a 64 str. ;  |c 30 cm +  |e CD-ROM 
502 |b diplomski studij  |c Fakultet elektrotehnike i računarstva u Zagrebu  |g smjer: Računarska znanost, šifra smjera: 56, datum predaje: 2019-06-28, datum završetka: 2019-07-09 
520 3 |a Sažetak na hrvatskom: Osmišljen je novi instrukcijski skup koji se bazira na load-store arhitekturi. Ostvaren je virtualni stroj koji se temelji na novom instrukcijskom skupu, funkcionalnosti za dohvaćanje arhitektonskog stanja procesora prije izvršavanja virtualiziranih instrukcija i funkcionalnosti za osvježavanje arhitektonskog stanja procesora poslije izvršavanja virtualiziranih instrukcija. Te su funkcionalnosti objedinjene u statičkoj biblioteci. Definiran je mehanizam kojim korisnik označava dijelove koda koje želi zaštititi. Napisan je program koji vrši zaštitu izvršne datoteke. Korisnik statičku biblioteku i mehanizme za označavanje koda uključuje u svoj projekt te definiranim mehanizmima označuje kritični dio koda koji želi zaštititi. Zatim generira izvršnu datoteku te pokreće program za zaštitu iste. Program za zaštitu u izvršnoj datoteci traži dio koda označen za zaštitu. Disasemblira svaku instrukciju unutar označenog dijela. Virtualizira podržane x86 instrukcije i nove instrukcije pohranjuje u spremnik instrukcija koje će izvršavati virtualni stroj. Kad dođe do instrukcije za koju nije podržana virtualizacija, u spremnik instrukcija sprema instrukciju koja će uzrokovati izlazak iz virtualnog stroja, osvježavanje arhitektonskog stanja procesora i vraćanje normalnom toku programa. Virtualizirane x86 instrukcije mijenja instrukcijama koje će svojim izvršavanjem (preko Strukturiranog upravljanja iznimkama (engl. Structured Exception Handling)) uzrokovati poziv funkcionalnosti definiranih u statičkoj biblioteci. Te funkcionalnosti služe za dohvaćanje arhitektonskog stanja i poziv virtualnog stroja. Proces virtualizacije ponavlja se za sve nizove instrukcija koje je moguće virtualizirati unutar kritičnog dijela koda. Program stvara zaštićenu izvršnu datoteku. 
520 3 |a Sažetak na engleskom: A new instruction set has been designed based on LOAD-STORE architecture, along with the corresponding virtual machine implementation. The implementation has been equipped with functionality which allows preserving CPU state before executing virtualized instructions, and restoring it afterwards. The solution has been implemented in a static library. The user may mark parts of code they want to protect through a defined interface. A program that protects the executable file has also been implemented. The user is expected to link his program with the static library and use the defined interface to mark part of code he wants to protect. He then generates the executable file and launches the protection program. The protection program searches the executable file for protected code, disassembling each instruction within and virtualizing supported x86 instructions. It stores new instructions into the instruction buffer. When it comes to instructions that are not supported for virtualization, instruction that will cause exit from the virtual machine, refresh the architectural state of the processor and resume to the normally run program is saved into the instruction buffer. Virtualized x86 instructions are replaced by instructions which, through their execution (via Structured Exception Handling), cause a functionality call defined in the static library. This functionality is used to capture the architectural state and to call the virtual machine. The virtualization process is repeated for all instruction sequences which can be virtualized within the critical part of the code. The program creates a protected executable file. 
653 1 |a virtualizacija  |a zaštita  |a reverzno inženjerstvo 
653 1 |a virtualization  |a obfuscation  |a reverse engineering 
700 1 |a Vladimir, Klemo  |4 ths  |9 40151 
942 |c Y 
999 |c 50877  |d 50877