Decompilatore Java

Rashmi Patidar 30 giugno 2021
Decompilatore Java

Il decompilatore è un’utilità che aiuta ad analizzare e decompilare i codici byte Java e produrre da essi il codice sorgente. La decompilazione è l’esatto processo inverso del processo di compilazione. Il processo è vantaggioso quando non è disponibile alcuna fonte e possiamo eseguire il debug dell’utilizzo del codice sorgente dopo aver decompilato il codice in byte e analizzarne il comportamento.

Poiché lo sviluppo viene eseguito utilizzando Integrated Development Environment (IDE) e quindi è vantaggioso avere un decompilatore nell’IDE stesso. Cerca il decompilatore di stringhe nel mercato degli IDE disponibili gratuitamente, ad esempio Eclipse o Intellij.

Per IDE che è Intellij, possiamo scaricare il plugin dal marketplace. Una volta che il plugin è in una posizione corretta, possiamo individuare il decompilatore nella barra laterale sinistra sotto il plugin Maven. Di seguito è riportato lo screenshot allegato per una migliore comprensione.

Plugin decompilatore in Intellij

Il codice del decompilatore viene automaticamente convertito nel codice sorgente e possiamo individuarlo nella cartella di destinazione. Di seguito è riportato lo screenshot allegato per la comprensione.

Codice sorgente dopo la decompilazione nella cartella di destinazione

Altri strumenti disponibili per convertire il codice byte in codici sorgente sono i seguenti.

Java Decompiler è un servizio web online insieme a un’applicazione reale. Possiamo decompilare qualsiasi codice Java 5 e versioni successive utilizzando l’utilità. Il servizio fornisce varie opzioni in base alle quali possiamo selezionare il decompilatore di nostra scelta dall’elenco. Sotto questo, abbiamo JD-GUI che è un’utilità grafica e aiuta a convertire i file .class per ottenere il codice sorgente Java dallo stesso. JD-Eclipse è un plugin IDE di eclipse che consente la decompilazione di un file di classe nell’IDE stesso. JD-Core è un’altra utility open source che ricrea il codice sorgente dal codice byte.

Un’altra utility è Procyon che si concentra principalmente sulla generazione e sull’analisi del codice. È un’utilità open source ed è fornita dalla licenza Apache 2. Consiste di librerie come framework principale, framework di espressioni, framework di riflessione, set di strumenti del compilatore e un decompilatore. Ha la sua utilità che facilita il processo di generazione del codice dal codice byte.

Per maggiori dettagli, visita il link GitHub -https://github.com/mstrobel/procyon

Il Krakatau è un altro strumento open source per assemblare e disassemblare il codice java byte. Lo strumento consente agli utenti di trasformare il codice binario in formato testo. Consente persino agli utenti di riconvertire nuovamente il codice sorgente in codice byte. L’utilità è puramente uno script Python, che viene eseguito quando eseguiamo il comando.

Maggiori dettagli sono sul link GitHub - https://github.com/Storyyeller/Krakatau

CFR è un altro decompilatore Java che consente di decompilare il codice byte di Java fino alla versione 14. Il codice del decompilatore è puramente scritto in Java 6 ed è facile da eseguire. Possiamo eseguirlo tramite un comando che esegue il jar e prende un parametro qui, il nome della classe da decompilare.

Ulteriori dettagli sono al link- https://github.com/leibnitz27/cfr

Fernflower è ancora un’altra utility disponibile che è ancora in fase di sviluppo. L’utilità è fornita da Apache License 2. L’esecuzione del comando è semplice come eseguire un jar insieme ai parametri.

Per maggiori dettagli visita- https://github.com/fesh0r/fernflower

Il DJ Java Decompiler è uno degli strumenti di utilità compatibili con Windows e le sue versioni successive. L’utilità è abbastanza potente da decompilare correttamente il codice dell’applet Java dal codice byte specificato. È un’applicazione Windows autonoma con un’interfaccia utente grafica ben definita.

Per maggiori dettagli visita- http://www.neshkov.com/

Rashmi Patidar avatar Rashmi Patidar avatar

Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.

LinkedIn