2015-07-31 1 views
0

J'ai décompilé un fichier .jar en utilisant JD-GUI, et beaucoup de paquets qui ont été bizarrement nommés comme a, b, c, d, et ainsi de suite. C'était également la même chose pour les classes, donc certains des fichiers .class étaient aussi nommés a.class, b.class et ainsi de suite.Pourquoi les fichiers .classes ont-ils des noms bizarres dans le fichier .jar?

Je ne crois pas que les développeurs nomment les paquets ou les fichiers Java de telle sorte qu'ils ne peuvent pas reconnaître plus tard ce que fait chaque fichier. Je crois que c'est à cause d'autres problèmes techniques. Quelqu'un peut-il être clair sur cette question?

Répondre

1

Le pot que vous avez décompilé est probablement protégé en utilisant ProGuard:

Par défaut, compilé bytecode contient encore beaucoup d'informations de débogage: Les noms de fichier source, les numéros de ligne, les noms de champs, les noms des méthodes, des noms d'argument , noms de variables, etc. Cette information permet de décompiler facilement le bytecode et de désosser des programmes entiers. Parfois, ce n'est pas souhaitable. Les obfuscateurs tels que ProGuard peuvent supprimer les informations de débogage et remplacer tous les noms par des séquences de caractères sans signification, ce qui rend beaucoup plus difficile le reverse engineering du code. Il compacte le code en bonus. Le programme reste fonctionnellement équivalent, à l'exception des noms de classe, des noms de méthode et des numéros de ligne donnés dans les traces de pile d'exception.

Il est encore possible de désosser le programme, mais il est très souvent illégal de le faire et ensuite réutiliser le code (au moins aux États-Unis, le seul pays avec lequel j'ai de l'expérience), comme il est un violation de licence. Les gens qui utilisent des outils comme celui-ci n'écrivent presque jamais de logiciels libres.

+2

La rétro-ingénierie n'est généralement pas illégale, et il existe une controverse quant à savoir si les clauses CLUF contre elle sont exécutoires dans divers pays. – chrylis

+0

@chrylis Édité en réponse – durron597