Reverzno inženjerstvo
SEMINARSKI RAD
Tema: Reverzno inženjerstvo
Predmet: Softversko Inženjerstvo
Mentor: Student:
Prof.dr Borivoje Milošević Jovan Milić И-22/2019
Beograd, 2022
2
SADRŽAJ:
1.
Uvod ..............................................................................................................3
2. Metode i tehnike rada…………………………………………………….4
3. Alati za obrnuti inženjering………………………………………………4
3.1.Pristupi obrnutom inženjeringu………………………………………….5
3.1.1. Analiza „vanmrežnog koda“…………………………………………5
3.1.2. Analiza "živog koda"…………………………………………………6
3.1.3. Alati za rastavljanje………………………………………………………6
3.2.Alati za dekompajler…………………………………………………….6
3.3.IDA Pro…………………………………………………………..…….7
3.4. OlliDbg…………………………………………………………………….9
3.5........Javap – Java Class Decompiler…………………………………….10
3.6.......... JDProject………………………………………………………………….12
4. Tehnike protiv obrnutog inženjeringa……………………………….…..13
4.1............Osnovni pristupi zaštiti od obrnutog inženjeringa………………….…13
4.2. Šifrovanje koda………………………………………………………..14
4.3........... Potiskivanje koda……………………………………………………..15
5. Zaključak………………………………………………………………………..16
6. Literatura………………………………………………………………………..17
1. Uvod

4
2.
Metode i tehnike rada
U ovom delu rada biće predstavljeni i ukratko objašnjeni alati koji su korišćeni pri pisanju
ovog završnog rada. Za razvoj teme i pisanje rada korišćeni su sledeći alati:
•
Microsoft Vord 2019
–alat koji je korišćen za pisanje samog rada,
formatiranje teksta i slika
•
Opera pretraživač
–alat koji je korišćen za pristup onlajn sadržaju i
literaturi neophodnoj za izradu rada
•
JDeveloper
–alat koji je korišćen za pisanje Java koda i kreiranje Java izvršnog
programa
•
Dev-C++
-alat koji je korišćen za pisanje C++ koda i kreiranje izvršnog C++
programa
•
OlliDbg
–alat koji je korišćen za dobijanje C++ izvršnog izvornog koda i alat koji
je analiziran kao alat za obrnuti inženjering
•
Javap - Java Class Decompiler
-alat koji je korišćen za dobijanje Java izvršnog
izvornog koda i alat koji je analiziran kao alat za obrnuti inženjering
•
IDA Pro
-alat koji je analiziran kao alat za obrnuti inženjering C++ izvršnih
datoteka
•
JDProject-
alat koji je analiziran kao alat za reverzni inženjering Java fajlova
•
VinDbg -
alat koji je analiziran kao alat za obrnuti inženjering C++ izvršnih
datoteka
•
Mendelei desktop
–alat koji je korišćen za ispravnu referencu citiranje
3. Alati obrnutog inženjeringa
Obrnuti inženjering je nemoguće uraditi bez odgovarajućih alata. Postoje brojni
dostupni alati koji se mogu koristiti za obrnuti inženjering. Ključno je razumeti razliku
između njih kako biste izabrali pravi za obrnuti inženjering vašeg željenog programa.
Kako postoje dve platforme na kojima se izvršavaju programske datoteke, Java
5
virtuelna mašina i Common Language Runtime, kao što je za njih neophodno koristiti
različite kompajlere da bi dobili izvršnu datoteku, tako je neophodno koristiti različite
alate obrnutog inženjeringa za dobijanje izvorni kod.ti programi. Koristeći alat za
obrnuti inženjering Java izvršnih datoteka, ekstenzija .jar, rezultujući opcioni kod je
„bajt kod“. Prilikom obrnutog inženjeringa i analize bajtkoda, posmatra se stanje na
steku kako bi se izvukle željene informacije iz izvršne datoteke. S druge strane,
prilikom obrnutog inženjeringa izvršne datoteke drugog jezika, na primer jezika C++
kao u ovom radu, rezultat se dobija u vidu asemblerskog koda, odnosno asemblerskog
programskog jezika. Prilikom analize asemblerskog koda posmatra se stanje registara
procesora kojih u 32-bitnom sistemu ima ukupno 8.
Navedeni registri i njihovo značenje su sledeći:
•
EAKS, EBKS, EDKS – registri koji se koriste za celobrojne, bool,
logičke i memorijske operacije
•
ECKS – brojač registara, ponekad služi kao brojač za instrukcije iteracije
•
ESI, EDI – registri koji služe kao izvorni i odredišni pokazivači za
instrukcije koje kopiraju podatke
•
EBP – registar koji služi kao pokazivač steka, u kombinaciji sa ESP
registrom, služi za oblikovanje okvira steka
•
ESP – registar koji služi kao pokazivač na CPU stek, u njemu se
čuva trenutna adresa steka
Kod obrnutog inženjeringa, proces analize bajtkoda je potpuno drugačiji od analize
originalnog asemblerskog koda. Pomenuta činjenica je rezultat toga što je bajtkod
mnogo detaljniji od originalnog asemblerskog koda. Zbog toga je programerima
programa teško da zaštite program od obrnutog inženjeringa i tu dolazi do potrebe za
zaštitom koda, o čemu će biti više reči kasnije u radu.
3.1. Pristupi obrnutom inženjeringu
Postoji mnogo pristupa obrnutom inženjeringu, izbor pravog pristupa zavisi od
ciljnog programa, platforme na kojoj se program pokreće i na kojoj je program
razvijen, i vrste informacija koje se želi dobiti iz izvršnog programa. Generalno,
pristupi obrnutom inženjeringu su analiza „Offline Code (Dead Listing)“ i „Analiza
uživo“.
Ovi slučajevi će biti detaljnije objašnjeni u nastavku.
3.1.1.
Analiza „offlajn koda“
Vanmrežna analiza koda je pristup u kojem se preuzima izvršna datoteka
Ovaj materijal je namenjen za učenje i pripremu, ne za predaju.
Slični dokumenti