Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
Krakatau — Decompilatore, assemblatore e disassemblatore Java | Kitploit
Strumenti/GitHubGitHub/storyyeller/krakatau
Reverse EngineeringAnalisi di Binari
GitHubstoryyeller/krakatau

Krakatau

Decompilatore, assemblatore e disassemblatore Java

Vedi Repository
2.2k237105 mesi faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Krakatau fornisce un assembler e un disassembler per bytecode Java, che ti permettono di convertire file di classe binari in un formato di testo leggibile, apportare modifiche e riconvertirli in un file di classe, anche per codice offuscato. Puoi anche creare tuoi file di classe da zero scrivendo bytecode manualmente e puoi esaminare e confrontare dettagli di basso livello di binari Java. A differenza di javap, il disassembler di Krakatau può gestire anche codice altamente offuscato e l'output disassemblato può essere riassemblato in un file di classe.

Krakatau fornisce anche un decompilatore per convertire binari Java in codice sorgente leggibile. A differenza di altri decompilatori, il decompilatore di Krakatau è stato progettato specificamente per lavorare con codice offuscato e può gestire facilmente trucchi che rompono altri decompilatori. Tuttavia, il decompilatore di Krakatau non supporta alcune funzionalità di Java 8+ come le lambda, quindi funziona meglio su codice più vecchio.

La sintassi dell'assembler di Krakatau è per lo più un superset della sintassi Jasmin con alcune piccole incompatibilità, ma a differenza di Jasmin, Krakatau ha pieno supporto per le specifiche bytecode di Java 19 e supporta anche alcune funzionalità non documentate presenti in vecchie versioni della JVM. Per una panoramica della sintassi dell'assembler, consulta il tutorial o la specifica completa.

Installazione

Prima, dovrai installare Rust e Cargo. Poi clona questo repo ed esegui cargo build --release. Questo produrrà un binario in target/release/krak2, che puoi chiamare direttamente, aggiungere al PATH, creare un link simbolico, ecc.

Disassemblaggio

Il disassembler ha due modalità: predefinita e roundtrip. La modalità predefinita è ottimizzata per la leggibilità e la facilità di modifica dei file assembly risultanti. Quando l'output viene riassemblato, produrrà file di classe che sono equivalenti nel comportamento all'originale dal punto di vista della specifica JVM, ma non necessariamente identici bit per bit (ad esempio, le voci del pool costante possono essere riordinate). La modalità roundtrip produce output che verrà riassemblato in file di classe bit per bit identici all'originale, ma ciò significa che i file assembly preservano informazioni di codifica di basso livello che li rendono più difficili da leggere, come l'ordine esatto delle voci del pool costante. Si consiglia di utilizzare la modalità roundtrip quando si lavora con codice che si basa su attributi non standard, come codice CLDC o codice Scala.

Esempio di utilizzo:

root@kitploit:~
krak2 dis --out temp RecordTest.class

krak2 dis --out disassembled.zip --roundtrip r0lling-challenge.jar

Puoi disassemblare un singolo file di classe o un intero file jar. Se il nome del file di input termina con .jar o .zip, verrà trattato come un file jar e ogni file .class al suo interno verrà disassemblato.

L'opzione --out controlla la posizione di output. Se il valore di --out è una directory, l'output verrà inserito in singoli file all'interno di quella directory. Altrimenti, se il valore di --out termina con .jar o .zip, l'output verrà inserito in un singolo file zip in quella posizione. Se il valore di --out termina con .j, l'output verrà scritto in quel file (nota che un singolo file .j può contenere più classi - tutte le classi verranno disassemblate e scritte nello stesso file, una dopo l'altra). Se l'opzione --out viene omessa del tutto, le classi disassemblate verranno scritte sull'output standard.

Per disassemblare in modalità roundtrip come descritto sopra, passa l'opzione --roundtrip (o -r in breve).

Assemblaggio

L'assembler di Krakatau ti permette di scrivere bytecode Java in un formato testuale leggibile e convertirlo in file di classe Java binari.

root@kitploit:~
krak2 asm --out temp Krakatau/tests/assembler/good/strictfp.j

Puoi assemblare un singolo file .j o un intero file jar. Se il nome del file di input termina con .jar o .zip, verrà trattato come un archivio zip e ogni file .j al suo interno verrà assemblato.

L'opzione --out controlla la posizione di output. Se il valore di --out è una directory, l'output verrà inserito in singoli file all'interno di quella directory. Altrimenti, se il valore di --out termina con .jar o .zip, l'output verrà inserito in un singolo file zip in quella posizione. Se il valore di --out termina con .class, il singolo file di classe di output verrà scritto in quel file (se l'input ha più classi, in questo caso verrà generato un errore).

Decompilazione

Il decompilatore v2 è ancora un lavoro in corso. Per la decompilazione, al momento devi usare Krakatau v1.

Scarica lo strumento