28.04.2013 Views

Ingineria inversă

Ingineria inversă

Ingineria inversă

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Exemple: ingineria <strong>inversă</strong> a programelor Java<br />

De la apariţia limbajului s-au scris multe decompilatoare Java, dar cel mai performat este JAD<br />

(Java Decompiler) scris de Pavel Kouznetsov. Ca să înţelegem cum lucrează un astfel de<br />

decompilator, vom face acest proces pas cu pas, “manual”.<br />

Să luăm la întâmplare un program java, de exemplu un applet descărcat din Web. Fie acesta<br />

snow.class, referit de pagina web http://thefrontier.tripod.com/winterwonderland.htm. Parametrii<br />

acestui applet îi aflăm din codul HTML al documentului (eticheta ) şi tot de aici aflăm<br />

numele clasei primare a appletului, în cazul nostru snow. Eticheta applet este:<br />

<br />

<br />

<br />

<br />

<br />

Acum, în bara de adrese a browser-ului scriem http://thefrontier.tripod.com/snow.class şi vom salva<br />

pe HDD fişierul snow.class.<br />

Mai departe vom folosi programul JCD (Java Class Disassembler), scris de autor, pentru a<br />

dezasambla codul de octeţi al clasei snow. Programul JCD este Open Sources şi poate fi descărcat de<br />

la adresa http://www.math.uaic.ro/~drusu/files/jcd.zip. Termenul “dezasamblat” este impropriu<br />

folosit aici, dar îl vom utiliza întrucât limbajul maşini virtuale Java seamănă destul de mult cu<br />

limbajul de asamblare.<br />

Cum ştim, un fişier clasă are numele identic cu cel al fişierului sursă care l-a generat, deci<br />

vom crea un fişier text cu numele snow şi extensia java. În acesta vom scrie codul sursă obţinut în<br />

urma decompilării. Utilizând JCD obţinem următorul cod dezasamblat:<br />

////////////////////////////////////////////////////////////<br />

This code was generated with JAVA CLASS DISASSEMBLER<br />

Copyright © Danut Rusu, 2001<br />

////////////////////////////////////////////////////////////<br />

ClassFile: snow.class<br />

--------------------------------------------------------------------<br />

00000000 Signature CAFE BABE<br />

00000004 Minor Version 3<br />

00000006 Major Version 45<br />

CONSTANT POOL<br />

- 15 -

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!