Quale sarebbe un decompilatore più accurata rispetto jad per Eclipse per sbarazzarsi di <-MISALIGNED ->?

StackOverflow https://stackoverflow.com/questions/3684539

Domanda

Ho usato Jad per molti anni, la maggior parte di questi con il JadClipse plugin per Eclipse che lo rende abbastanza usabile. Soprattutto con il "codice di Align per il debug", che permette di vedere il codice decompilato per qualsiasi linea in una traccia dello stack. Molto bello.

Purtroppo ho visto sempre di più che il <- disallineata -> commento intrufola in, che è molto probabilmente perché Jad si aspetta che il file di classe per essere in ordine, che chiaramente non è il caso per la libreria di runtime Java 6. Pertanto, quando la scrittura del file, e un'istruzione dice "questa è la linea 100" quindi 99 righe vuote sono scritte, e se poi la successiva istruzione dice "questo è per la linea 10" poi jad non può tornare indietro per mettere che la produzione lì, ma si limita a stampare un commento che questo è nel posto sbagliato.

Ecco un esempio per HttpURLConnection:

          protected HttpURLConnection(URL url, Proxy proxy, Handler handler1)
            {
/* <-MISALIGNED-> */ /* 603*/        super(url);
/* <-MISALIGNED-> */ /* 192*/        ps = null;
/* <-MISALIGNED-> */ /* 196*/        errorStream = null;
/* <-MISALIGNED-> */ /* 199*/        setUserCookies = true;
/* <-MISALIGNED-> */ /* 200*/        userCookies = null;
/* <-MISALIGNED-> */ /* 220*/        currentProxyCredentials = null;
/* <-MISALIGNED-> */ /* 221*/        currentServerCredentials = null;
/* <-MISALIGNED-> */ /* 222*/        needToCheck = true;
/* <-MISALIGNED-> */ /* 223*/        doingNTLM2ndStage = false;
/* <-MISALIGNED-> */ /* 224*/        doingNTLMp2ndStage = false;
/* <-MISALIGNED-> */ /* 226*/        tryTransparentNTLMServer = NTLMAuthentication.supportsTransparentAuth();
/* <-MISALIGNED-> */ /* 227*/        tryTransparentNTLMProxy = NTLMAuthentication.supportsTransparentAuth();
/

La domanda è ora se c'è un altro decompiler che genera più accurata formato da linee di uscita. La decompilazione attuale non ha bisogno di essere estremamente grandi o altro, ma mi piace molto essere dove la vista Java Stack Trace si aspetta che sia. Se funziona bene con JadClipse, questo è ancora meglio.

È stato utile?

Soluzione

Il problema di formattazione per il debug viene da jadclipse e non da jad. jad non ha questa capacità.

Il jadclipse plug-in ha una sezione di codice poco in un DebugAlignWriter nomi di classe che fa questo:

if((align = getAlignTarget(aLine)) != -1)
{
   if(align < curLine)
   {
      if(curLine != 0)
      {
          out.write(10);
      }
      out.write("/* <-MISALIGNED-> */ ");
      out.write(aLine);
      curLine++;
   }
   else if(align == curLine)
   {
      out.write(aLine);
   }
   else
   {
      for(; align > curLine; curLine++)
      {
          out.write(10);
      }
      out.write(aLine);
   }

}

Fondamentalmente si tenta di allineare l'output jad.

Quindi la causa principale è che jad produce un'uscita che non è necessariamente in ordine di lettura. Purtroppo non posso far luce sul motivo per cui jad agisce in questo modo. Secondo l'aiuto jad non c'è modo di controllare l'ordine.

Ho notato in jadclipse che se si imposta JadClipse-> Formatting-> non inserire una nuova riga prima della parentesi graffa di apertura - lo farà ridurre il numero di segmenti /* <-MISALIGNED-> */ dovuta alla natura di come funziona.

Inoltre, se è stata selezionata la Campi di emissione metodi opzione prima di poter aumentare il numero di segmenti /* <-MISALIGNED-> */, in modo da evitarlo.

Altri suggerimenti

JD-Eclipse è un ottimo decompilatore che anche maniglie Java 7 caratteristiche.

E non ha un "codice Align per il debug" caratteristica ancora, ma ho aggiunto uno io. Sto usando per l'ultimo anno.

Ho anche gestire i casi in cui la linea deve essere spostato indietro; Ho ancora segnare come disallineati di segnalare il caso speciale, ma almeno è messo sulla linea di destra.

Se qualcuno vuole fare un tentativo che può essere scaricato da qui . Maggiori dettagli all'interno README.txt

Io uso Jad con un minimo di formattazione possibile e poi io uso comando format di Eclipse, come posso farlo corrispondere il mio stile preferito dalle preferenze.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top