Newsgroup: it.comp.java
Titolo: Decompiling

Sto cercando di decompilare alcune classi
con jad
e non riesce.
Mi riempie di label, goto e altro.
Metto un frammento + avanti.
E' un problema risolvibile ?
Puo' essere colpa di Jad e un altro ce la fa ?
( non mi va di provarli tutti )
Frammento
    public Object _mthif(Object obj, m.e e1)
        throws al
    {
        ResultSetMetaData resultsetmetadata;
        int i;
        int k;
        int i1;
        ResultSet resultset = (ResultSet)obj;
        resultsetmetadata = resultset.getMetaData();
        if(!e1._flddo)
            break MISSING_BLOCK_LABEL_137;
        i = resultsetmetadata.getColumnCount();
        k = 0;
        i1 = 1;
          goto _L1
_L3:
        String s = resultsetmetadata.getColumnName(i1);
        boolean flag = e1.a ? s.equals(e1._fldint) : s.equalsIgnoreCase(e1._fldint);
        if(!flag)
            continue; /* Loop/switch isn't completed */
        if(k == e1._fldfor)
            return new b(i1, resultsetmetadata.getColumnType(i1),
resultsetmetadata.getColumnTypeName(i1));
        k++;
        i1++;
_L1:
        if(i1 <= i) goto _L3; else goto _L2
_L2:
        return null;
        return new b(e1._fldif, resultsetmetadata.getColumnType(e1._fldif),
resultsetmetadata.getColumnTypeName(e1._fldif));
        SQLException sqlexception;
        sqlexception;
        throw new j(sqlexception);
    }
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 [CUT]
Io uso Dj Java Decompiler ( del tutto freeware ) e mi  trovo bene; non mi
sono mai addentrato nei particolari..ma se anche con questo dovesse fallire
il decompiler..o comunque darti problemi...probabilmente il codice sarà
stato offuscato..almeno credo! Saluti
Davide Denicolo
davide<at>
securityinfos.com
--
=======================
Ciò che l'occhio vede e l'orecchio
sente , la mente crede
=======================


Provo
grazie cya


Cosě, a occhio e croce, direi che il commento /* Loop/switch isn't
completed */ sia corretto, ovvero che non č in grado di ricostruire una
switch e quindi la "decompila" in maniera un po' piů hardcore, con una
sfilza di label e di goto condizionali.
Se ricompili, funziona?
Potresti provare a crearti tu un banale switch e chiedere a Jad di
decompilarlo... :-)
Alex.
-- 
___________________________________________________________
a p bertolini
(Tribů Digitale Blackmambo: 
www.blackmambo.it
)


Purtroppo non compilo
dove dice break MISSINGBLOCKLABEL
da errore e qualche altro
Il problema e' che e' una libreria
e non so quante classi dovrei ricostruire
per fare la modifica che mi interessa
Grazie comunque


 dove dice break MISSINGBLOCKLABEL
Già, break e goto non sono Java. Doh!
Cmq quel codice, con un po' di pazienza, può essere riparato "a mano"...
avendo tempo e pazienza.
Ad ogni modo, auguri! :-)))
Alex.
-- 
___________________________________________________________
a p bertolini
(Tribù Digitale Blackmambo: 
www.blackmambo.it
)

 Già, break e goto non sono Java. Doh!
Scusami ma ti devo contraddire.
Break e goto sono Java.
Sì hai sentito bene anche goto. Immagino già la tua espressione nel leggere
queste parole.
Penso che sia la stessa espressione che ho fatto un fatidico giorno quando
mettendo le mani dentro il codice scritto da un programmatore
certificato Java ho notato il famoso costrutto
label:
   .
   .
   .
   .
goto label
Non ci credevo nemmeno io. :-)
Ritornando al codice decompilato, IMHO è codice offuscato.
G.M.

 goto label
Rettifico era :
label:
     for(.....){
         .
         .
         .
         continue label;
    }
Non ho capito l'utilità di questa cosa ma cmq il concetto IMHO è uguale a
quello del goto.
G.M.

La mia sorpresa nasce dal fatto che prima di rispondere ho consultato il
JavaDoc... :-(
Non commento sul tuo conoscente "certificato". Cribbio! In Programmazione I
mi hanno ripetuto alla nausea "non programmate con goto"... ed usavamo
Pascal!!
Alex.
-- 
___________________________________________________________
a p bertolini
(Tribů Digitale Blackmambo: 
www.blackmambo.it
)

 Non commento sul tuo conoscente "certificato".
Meno male che non era un conoscente, altrimenti penso che sarebbe volato giů
dalla finestra :-)
Cmq questo č lo snippet incriminato (dio piů lo guardo piů mi viene la
nausea :-) )
label:
   for(int i = 0 ; i <= size; i++){
    ...........
        continue label;
   }
effettivamente guardandolo cosě non mi sembra un vero e proprio goto...anche
perchč quando l'uguaglianza č soddisfatta si esce dal cliclo for.
La cosa strana č che tale costrutto sia ammesso.
Dimentico che si usava la versione 1.2 (anche se dubito che centri
qualcosa).
G.M.

Ciao, APB!
Il giorno 02/08/2004 alle ore 15:26 hai scritto:
 >> Purtroppo non compilo
 >> dove dice break MISSINGBLOCKLABEL
 A>
 A> Già, break e goto non sono Java. Doh!
Dimenticate che quel codice e' saltato fuori da un decompilatore. La Java VM
e' un processore con il suo set di istruzioni che comprendono anche i
"goto", esattamente come l'x86 comprende i salti. Un programma C++ fatto con
tutti i crismi della programmazione object oriented viene comunque tradotto
in un numero infinito di salti condizionati e non. La stessa cosa accade in
Java.
Il fatto che il decompilatore abbia inserito in goto non significa che esso
sia effettivamente presente nel codice sorgente originale, semplicemente non
ha riconosciuto il pattern di istruzioni e non l'ha tradotto nel sorgente
"ideale".
Bye
-- 
Try not. Do, or do not. There is no try.
http://www.maccasoft.com

Ciao, Giovanni!
Il giorno 02/08/2004 alle ore 16:19 hai scritto:
 GM> Non ho capito l'utilità di questa cosa ma cmq il concetto IMHO è uguale
 GM> a quello del goto.
http://java.sun.com/docs/books/tutorial/java/nutsandbolts/flowsummary.html
Bye
-- 
Hard to see, the Dark Side is.
http://www.maccasoft.com

 
http://java.sun.com/docs/books/tutorial/java/nutsandbolts/flowsummary.html
Thanx, almeno ora so che è lecito e che non era un attentato codificato. :-)
G.M.

 ha scritto nel messaggio
news:213Z21Z168Z6Y1...@usenet.libero.it...
