Home Chi sono Mappa del sito Contatti  
 
Java
Apache Wicket
Sistemistica Totocalcio
 
 
Programmare Applicativi...
Presentazione del libro
Panoramica dei contenuti
 
 
Giochi in PHP
Introduzione
Filetto (Tris)
Forza 4
Sudoku
 
 
Tutorial Linux/Unix
Archivio
 
 
Sql
Tutorial su Mysql
 
 
C++
Framework a oggetti
 
Archivio->Decompilare un file java .class con Jad

Decompilare un file java .class con Jad

Questo 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
# make install
# make clean


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.