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

background image

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 

Želiš da pročitaš svih 17 strana?

Prijavi se i preuzmi ceo dokument.

Ovaj materijal je namenjen za učenje i pripremu, ne za predaju.

Slični dokumenti