Domanda

Per il nostro progetto stiamo facendo una specie di ingegneria reverse. Per questo dobbiamo eseguire il debug di un barattolo di terze parti.

Ho provato a de-compluire quel barattolo con DJ, JAD, ma l'output è il codice sorgente con errori di tempo di compilazione (diciamo che il tipo di ritorno è booleano nel prototipo del metodo, ma restituendo int, rotto per loop, ecc ...).

Ora, da questo codice sorgente corrotto, ci sono pochi file .java, che voglio debug. E voglio allegare questi pochi file sorgente con le classi corrispondenti in JAR.

Ho cercato su Google per questo, ma non ho trovato nulla di utile. ????

È stato utile?

Soluzione

Il bloccante è che i decompilatori molto probabilmente non sono in grado di riscrivere un file di origine con numeri di riga corretti. Quindi, anche se la Lib compilata ha le informazioni sul numero di riga appropriate, l'utilizzo dell'output decompilato fuori dalla scatola non funzionerà.

Sarai in grado di impostare i punti di interruzione nel metodo (purché le informazioni sul numero di linea siano disponibili nei file di classe compilati) anche senza avere il codice sorgente. Potresti anche essere in grado di leggere i valori delle variabili locali (di nuovo, se le classi sono state compilate con le informazioni sul debug) ma poi devi guardare l'output del decompilatore e sperare per il meglio, che il metodo decompilato è abbastanza vicino al Codice reale.

Non è impossibile ma richiede un lavoro "manuale".

Altri suggerimenti

Non hai menzionato quale IDE stai usando per il debug. Eclipse chiede le fonti se si tenta di eseguire il debug di lezioni che sono disponibili solo in forma di classe. Il problema principale è come Andreas_d ha già menzionato i numeri di linea non corrispondenti.

Proverei quanto segue.

  1. Elimina tutti i file Java decompilati non è stato decompilato in uno stato di lavoro.
  2. Prova a compilare ogni file Java decompilato funzionante utilizzando il barattolo originale in ClassPath. Ciò consente di generare nuovi file di classe con informazioni di linea corrette per il debug.
  3. Ora sostituisci i file di classe nel file jar con quelli che hai ricompilato correttamente. Aggiungi anche i file Java. L'IDE di debug dovrebbe riconoscere automaticamente i file di origine.

Per allegare il codice sorgente per una classe nel codice Java:

  • Fare clic con il tasto destro sulla classe desiderata

  • Vai alla dichiarazione aperta F3
    L'editor dei file di classe si aprirà Fare clic sul pulsante Allega sorgente

  • Sfoglia Jar che ha un codice sorgente

  • Clicu003COk>
    Dopo aver eseguito il passaggio sopra, Apri la dichiarazione aprirà il file. Class con codice sorgente.

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