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 />

()Ljava/awt/Dimension;, adică nu are parametri şi returnează o referinţă la un obiect Dimension. Prin<br />

urmare vom încărca în stiva noastră abstractă acest obiect, reprezentat prin codul this.size().<br />

Instrucţiunea putfield generează cod sursă, deci obţinem:<br />

this.dim = this.size();<br />

instrucţiune echivalentă cu<br />

dim = size();<br />

19 aload_0<br />

20 aload_0<br />

21 aload_0<br />

22 getfield snow/dim Ljava/awt/Dimension;<br />

25 getfield java/awt/Dimension/width I<br />

28 aload_0<br />

29 getfield snow/dim Ljava/awt/Dimension;<br />

32 getfield java/awt/Dimension/height I<br />

35 invokevirtual java/awt/Component/createImage (II)Ljava/awt/Image;<br />

38 putfield snow/offScrn Ljava/awt/Image;<br />

Evoluţia stivei în timpul execuţiei instrucţiunilor de mai sus este:<br />

this<br />

this<br />

this.dim.width<br />

this<br />

this<br />

this<br />

this<br />

this.dim<br />

this.dim.width<br />

this<br />

this<br />

this<br />

this<br />

this<br />

this.dim.height<br />

this.dim.width<br />

this<br />

this<br />

this.createImage(this.dim.width, this.dim.height)<br />

this<br />

this.dim<br />

this<br />

this<br />

this.dim.width<br />

Instrucţiunea getfield încarcă în stivă valoarea unui atribut; în cazul decompilării vom încărca în stivă<br />

numele atributului. De exemplu, instrucţiunea getfield de la offset-ul 25 trebuie să găsească în stivă<br />

referinţa la un obiect de tip Dimension, referinţă folosită pentru a obţine atributul width din acest<br />

obiect. Instrucţiunea invokevirtual de la offset-ul 35 apelează metoda createImage din obiectul this,<br />

identificată la nivel superior, în clasa Component, metodă care are 2 parametri de tipul int. Deci<br />

- 25 -<br />

this<br />

this

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

Saved successfully!

Ooh no, something went wrong!