Ingineria inversă
Ingineria inversă
Ingineria inversă
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 -