/ / Perché è così facile decompilare il codice Java? [closed] - java, decompiling

Perché è così facile decompilare il codice Java? [closed] - java, decompiling

Quindi ho appena realizzato quanto sia facile decompilare il mio codice Java. Ho cercato in rete e non riesco a capire PERCHÉ è così facile. Ogni volta che google qualcosa come "Perché posso decompilare .class File?"o" Perché Java si decompila così facilmente ", tutto ciò che ottengo sono collegamenti a software che può facilmente de-compilare il mio codice. Quindi mi rivolgo a StackOverflow: perché Java può essere riconvertito in codice sorgente leggibile facilmente mentre C ++ e altri le lingue non sono molto facili da decompilare?

Grazie

risposte:

55 per risposta № 1

Perché il codice byte Java è più vicino (più simile) all'origine rispetto all'assembly.

In particolare, .class i file includono metadati per nomi di classi, nomi di metodi, tipi di campi e parametri, ecc ...
Tutto ciò che un decompilatore Java (o .Net) deve fare è osservare le istruzioni in ogni corpo del metodo e trasformarle in costrutti sintattici appropriati.

Al contrario, le lingue native come il C ++ non includono alcun metadata, quindi il decompilatore deve ricostruire qualunque cosa.


21 per risposta № 2

Java è compilato in una forma intermedia, JVMbytecode, che conserva una grande quantità di informazioni contenute nel codice Java originale. Un linguaggio come C ++ viene compilato in codice assembly, con un aspetto molto diverso dal codice originale ed è, quindi, più difficile da invertire.