49 votes

Pourquoi est-il si facile de décompiler le Code Java ?

Donc, je viens de réaliser combien il est facile de décompiler mon code Java. J'ai cherché sur le net et je n'arrive pas à comprendre POURQUOI son si facile. Chaque fois que je google quelque chose comme "Pourquoi ne puis-je decomilple .class fichiers?" ou "Pourquoi Java décompiler si facilement", tout ce que je obtenir des liens vers des logiciels qui peuvent facilement deompile mon code. Je me tourne donc vers vous StackOverflow: pourquoi est-ce que Java peut être reconverti à easlily lisible le code source en C++ et autres langages ne sont pas très respectueux de la décompilation?

Merci

58voto

SLaks Points 391154

Parce que Java byte-code est plus proche (de plus en plus semblables) à la source de l'assemblée.

En particulier, .class fichiers contiennent des métadonnées pour les noms de classe, les noms de méthode, le champ et les types des paramètres, etc...
Tous Java (ou .Net) decompiler doit faire est de regarder les instructions dans chaque corps de la méthode, et de les transformer en des constructions syntaxiques.

En revanche, natif de langages tels que le C++ ne comprennent pas tout de métadonnées, de sorte que le decompiler besoins de reconstruire tout.

22voto

dhg Points 26700

Java est compilé dans une forme intermédiaire, le bytecode de la JVM, qui conserve une grande partie des 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 de celle du code d'origine et, par conséquent, plus difficile à inverser.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X