Question

Pour notre projet, nous effectuons une sorte d'ingénierie inverse.Pour cela, nous devons déboguer un pot tiers.

J'ai essayé de décompiler ce pot avec DJ, JAD, mais la sortie est un code source avec des erreurs de compilation (disons que le type de retour est booléen dans le prototype de méthode, mais renvoie un int, est interrompu pour les boucles, etc...).

Maintenant, à partir de ce code source corrompu, il existe quelques fichiers .java que je souhaite déboguer.Et je souhaite joindre le code source de ces quelques fichiers avec les classes correspondantes dans jar.

J'ai cherché cela sur Google, mais je n'ai rien trouvé d'utile.????

Était-ce utile?

La solution

Le bloqueur est que les décompilateurs sont très probablement incapables de réécrire un fichier source avec des numéros de ligne corrects.Ainsi, même si la bibliothèque compilée contient les informations de numéro de ligne appropriées, l'utilisation de la sortie décompilée prête à l'emploi ne fonctionnera pas.

Vous pourrez définir des points d'arrêt dans la méthode (tant que les informations sur le numéro de ligne sont disponibles dans les fichiers de classe compilés) même sans avoir le code source.Vous pourrez peut-être même lire les valeurs des variables locales (encore une fois, si les classes ont été compilées avec des informations de débogage), mais vous devrez alors regarder la sortie du décompilateur et espérer que la méthode décompilée soit suffisamment proche de la méthode décompilée. vrai code.

Ce n'est pas impossible mais nécessite un travail "manuel".

Autres conseils

Vous n'avez pas mentionné que IDE que vous utilisez pour le débogage. Eclipse demande les sources si vous essayez de classes de débogage qui ne sont disponibles que sous forme de classe. Le principal problème est que Andreas_D déjà mentionné les numéros de lignes qui ne correspondent pas.

Je voudrais essayer ce qui suit.

  1. Supprimer tous les fichiers java décompilés avec n'a pas été décompilé dans un état de fonctionnement.
  2. Essayez de compiler chaque travail fichier java décompilé en utilisant la d'origine JAR dans classpath. Cette vous permet de générer nouvelle classe fichiers avec infos en ligne pour corriger débogage.
  3. Maintenant, remplacer les fichiers de classe dans la fichier JAR avec ceux que vous avez recompilé avec succès. Ajouter aussi les fichiers java. IDE Votre débogage devrait reconnaître automatiquement le fichiers puis source.

Pour joindre le code source pour une classe dans le code java:

  • Faites un clic droit sur la classe souhaitée

  • Allez ouvrir Déclaration [F3]
    Classe éditeur de fichier s'ouvre cliquez sur le bouton Joindre Source

  • jar Parcourir qui a le code source

  • Cliquez sur
    Après avoir fait étape ci-dessus, Déclaration ouverte ouvrira fichier .class ayant le code source.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top