/ / Pourquoi est-il si facile de décompiler du code Java? [fermé] - java, décompiler

Pourquoi est-il si facile de décompiler le code Java? [fermé] - java, décompilation

Je viens donc de réaliser à quel point il est facile de décompiler mon code Java. J'ai effectué des recherches sur le réseau et je n'arrive pas à comprendre. POURQUOI il est si facile. Chaque fois que je recherche quelque chose comme Google "Pourquoi puis-je décompresser?" .class des dossiers?"ou" Pourquoi Java décompile-t-il si facilement? ", je n'ai que des liens vers des logiciels qui peuvent facilement décompiler mon code. Je me tourne donc vers vous StackOverflow: pourquoi est-il possible de reconvertir Java en code source lisible alors Les langues ne sont-elles pas très propices à la décompilation?

Merci

Réponses:

55 pour la réponse № 1

Parce que Java byte-code est plus proche (plus similaire) de la source que l'assembly.

En particulier, .class les fichiers incluent des métadonnées pour les noms de classe, les noms de méthodes, les types de champs et de paramètres, etc.
Un décompilateur Java (ou .Net) doit simplement examiner les instructions contenues dans le corps de chaque méthode et les transformer en structures syntaxiques appropriées.

En revanche, les langages natifs tels que C ++ n'incluent aucune métadonnée, le décompilateur doit donc reconstruire tout.


21 pour la réponse № 2

Java est compilé dans une forme intermédiaire, JVMbytecode, qui conserve une grande quantité d'informations contenues dans le code Java d'origine. Un langage tel que C ++ est compilé en code assembleur, avec une apparence très différente du code original et est donc plus difficile à inverser.