Analiza izvornog i izvršnog koda u programskom jeziku Java : završni rad - Staroveški, Vilim (V. Staroveški, 2017)
Sažetak na hrvatskom: Dekompilator je računalni program kojem kao ulaz dajemo izvršni kod nekog pro- grama, a kao izlaz dobivamo izvorni kod programa zapisan u programskom jeziku više razine. Ako se dobiveni kod može kompilirati natrag u izvršni kod jednak izvršnom kodu sa početka, zaključujemo da se dekompilacija uspiješno izvršila. Postoji mnogo situacija u kojima je dekompiliranje korisno, a neke od njih su vračanje izgubljenog izvornog koda, pretvaranje programa za neku platformu u program za neku drugu plat- formu, provjera ispravnosti programa, potraga za zlonamjernim kodom ali i ilegalne akcije poput krad̄e tud̄ih ideja iz tud̄eg koda. Uz pojam dekompilacije često se veže i pojam reverznog inžinjerstva. Reverzno inžinjerstvo je proces izvlačenja znanja i informacija iz proizvoda koje su napravili ljudi. Java dekompilator je alat koji je dizaj- niran za prevod̄enje Javinih datoteka .class u izvorne Java datoteke tj. u datoteke .java. Kroz povijest pojavili su se mnogi Java dekompilatori, ali su samo neki najkorišteniji, a to su JD project, Cavaj, JBVD i DJ. Ovaj rad se temelji na analizi nestandardnog de- kompilatora. Naime, ideja rada tog dekompilatora je slijedeća: program uzima izvorni kod i njegov kompilaciju u class datoteci, zatim u datoteci .class traži bytecode ins- trukcije koje povezuje sa linijama Java koda iz izvorne datoteke. Taj proces možemo nazvati kao učenje programa kako dekompilirati. Te informacije sprema u bazu po- dataka. Nakon što smo dekompilator dovoljno “naučili”, spreman je za dekompilaciju datoteka .class. Dekompilaciju bi vršio tako da čitanjem bytecode instrukcija dohvača Java linije koje ih predstavljaju.