Oppure

Loading
Questo topic e' stato chiuso dal moderatore.
24/11/09 20:57
modder91
spero possiate essermi utili:
ho decompilato un file class (originariamente era in un jar di un gioco per cell, che aveva l'accelerometro al contrario) con Cavaj e ora quando vado a ricompilarlo con javac mi da 23 errori.. forse ha decompilato male?:d
aaa
24/11/09 22:25
netarrow
Postato originariamente da modder91:
javac mi da 23 errori.. forse ha decompilato male?:d


a questa domanda si può solo rispondere si :asd:
aaa
25/11/09 14:06
modder91
Praticamente ho solo bisogno di cambiare delle cordinate (se la mia ipotesi è giusta), non c'è altro metodo oltre a decompilare e ricompilare?!
aaa
25/11/09 20:21
netarrow
generalmente no; a meno di andare a modificare a mano il bytecode se conosci il linguaggio pseudocompilato della jvm.

cmq se il programma non è stato ofuscato (il che vuol dire che stai violando la licenza per modificarlo) decompilare e ricompilare, se si conosce il linguaggio java si intende, è fattibilissimo salvo eventualmente qualche imprevisto dove la decompilazione genera codice non proprio esatto (può capitare ma basta dare una sistemata).
aaa
26/11/09 14:11
modder91
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx è il file decompilato. Per invertire l'accelerometro ho pensato di cambiare queste stringhe (ho messo il - davanti):
            case 1: // 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx è il file decompilato. Per invertire l'accelerometro ho pensato di cambiare queste stringhe (ho messo il - davanti):

            case 1: // '{parsed_message}1'
                double ad[] = this[i].getDoubleValues();
                float f3 = 0.0F;
                int l = ad.length;
                for(int i1 = 0; i1 < l; i1++)
                {
                    f3 = (float)ad[i1];
                }

                if(channelinfo.getName().equals("[b]-axis_x[/b]"))
                {
                    f = f3;
                }
                if(channelinfo.getName().equals("[b]-axis_y[/b]"))
                {
                    f1 = f3;
                }
                if(channelinfo.getName().equals("[b]-axis_z[/b]"))
                {
                    f2 = f3;
                }
                break;


Ecco gli errori che mi da:
img510.imageshack.us/i/catturai.jpg/1' double ad[] = this[i].getDoubleValues(); float f3 = 0.0F; int l = ad.length; for(int i1 = 0; i1 < l; i1++) { f3 = (float)ad[i1]; } if(channelinfo.getName().equals("[b]-axis_x[/b]")) { f = f3; } if(channelinfo.getName().equals("[b]-axis_y[/b]")) { f1 = f3; } if(channelinfo.getName().equals("[b]-axis_z[/b]")) { f2 = f3; } break;


Ecco gli errori che mi da:
img510.imageshack.us/i/catturai.jpg/
Ultima modifica effettuata da netarrow 26/11/09 17:12
aaa
26/11/09 17:08
netarrow
la modifica non so se è giusta; cioè posso dirti che sintatticamente è giusta in Java, ma dovresti studiarti tu la libreria microedition per sapere come si usano i metodi delle varie classi.
Ad esempio cercando documentazione:
library.forum.nokia.com/…
O leggendo qualche testo ad esempio mokabyte ha un libro in formato elettronico sullo sviluppo JME.

Per quanto riguarda gli errori sono per lo più di tipo "strano" appunto derivanti dalla decompilazione.

Ad esempio la presenza di goto e di comandi riferiti a codici come:

JVM INSTR dup;
adata;
j;

Metodi quindi palesemente ofuscati, con label nidificate e nomi a caso e parti di codice che il decompilatore non ha ritradotto correttamente (unica soluzione sistemare a mano tutto: un lavorone).

Quindi le cose da dire sono:
- Prima di fare modifiche alla cieca devi studiare il linguaggio e le librerie usate dall'appliccazione (in questo caso JME)

- Stai modificando un software che essendo ofuscato è palese che ha una licenza che non permette di modificarlo e quindi questo forum non può più esserti di supporto.
Ultima modifica effettuata da netarrow 26/11/09 17:10
aaa