![]() |
| Home | Chi sono | Mappa del sito | Contatti |
|
Archivio->Decompilare un file java .class con Jad
Decompilare un file java .class con JadQuesto piccolo tutorial spiega come installare ed utilizzare Jad (JAva Decompiler) per decompilare un file classe java.Spostatevi sulla directory del port di Jad, ed avviate l'installazione: # cd /usr/ports/java/jad
Per decompilare un file <nome file>.class in questo modo: # jad <nome file>.class
Il risultato è il file <nome file>.jad contenente il codice java corrispondente. Per decompilare un file <nome file>.class e restituire il file con estensione .java: # jad -sjava <nome file>.class
Per decompilare i file .class contenuti nella directory <percorso> e restituire i corrispondenti file java nella directory <nome directory> sovrascrivendo eventuali file esistenti: # jad -o -sjava -d <nome directory> <percorso>/*.class
Per decompilare i file .class contenuti nella directory <percorso> e restituire i corrispondenti file java nella directory <nome directory> mantenendo la struttura delle directory dei relativi package: # jad -r -o -sjava -d <nome directory> <percorso>/*.class
A scopo didattico viene proposto un semplicissimo script shell per la conversione di un intero pacchetto jar in una directory contenente i file java corrispondenti. Lo script prende in ingresso il nome del file jar e opzionalmente il percorso dove andare a creare i file java (di default è 'src'). La prima riga dello script contiene il riferimento della shell che lo andrà ad eseguire (sh è una shell molto comune, se volete cambiarla assicuratevi di inserire una shell esistente e di verificare la correttezza del percorso): #!/bin/sh
Possiamo aggiungere un controllo per verificare l'esistenza del primo parametro: Adesso raccogliamo i parametri in ingresso: Se il percorso file_jar è un percorso relativo, occorre aggiungere "../" per tornare nella directory padre: Possiamo scompattare il file jar in una directory temporanea. Vediamo come creare questa directory e scompattarci dentro il jar. A questo punto dobbiamo recuperare tutti i file .class: All'interno del ciclo è sufficente questo comando: Alla fine si deve eliminare la directory temporanea. Il risultato finale è dunque: Come esercizio potete provare a migliorare questo semplice script in qualcosa di più elaborato. |