|
|
|
|
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
|