[C#] Code décompilé ne recompile pas...

Code décompilé ne recompile pas... [C#] - C#/.NET managed - Programmation

Marsh Posté le 12-01-2021 à 15:00:43    

Bonjour,
 
Nous avons récupéré un client qui a un outil développé par un ancien prestataire, aujourd'hui disparu.
Ce programme fonctionnait bien... jusqu'à maintenant, et plante soudainement.
 
Pas de sources, ce serait trop beau. On n'a même pas de documentation, spécifications ni même cahier des charges... Juste "ah ben le bouton y marche plus".
 
Nous avons réussi à le décompiler avec Telerik Just Decompil mais le source produit contient des erreurs :
 
Lors de la désérialisation d'un objet (évidement casté en JSObject par le décompilateur) il tente d'accéder à un attribut de l'objet désérialisé inconnu.
Pourtant, aucune classe du projet n'expose un tel attribut.
 
Avez-vous une idée de comment cette classe aurait pu être produite pour qu'une fois décompilée, elle n'expose plus un attribut pourtant utilisé dans le code compilé ?
 
Avant d'utiliser Just Decompil j'avais tenté avec un autre outil qui faisait des erreurs de compil justement à cause d'attributs d'objets déclarés dans le JIT plutôt qu'à la compilation : le code était donc incomplet.
 
Quelqu'un aurait une idée pour y voir plus clair ?

Reply

Marsh Posté le 12-01-2021 à 15:00:43   

Reply

Marsh Posté le 16-01-2021 à 15:29:16    

Il faut faire des coupes (judicieuses) jusqu'à ce que ça compile, et reconstruire ce qui a été détruit.
La décompilation donne rarement de l'exploitable.

Reply

Marsh Posté le 16-01-2021 à 16:28:25    

Et un autre décompilateur genre dotPeek ? Ou Reflector ? Vu qu'il y en a plusieurs avant de désosser le truc à la main ça vaut le coup d'en essayer quelques uns, on ne sait jamais.
J'ai pas compris ton truc de JSObject, et sans avoir une seule ligne de code ni à quoi sert l'outil on risque de ne pas pouvoir aider beaucoup plus.


---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
Reply

Marsh Posté le 16-01-2021 à 20:03:33    

J'ai essayé aussi DotPeek et un collègue un autre.
 
Les deux se sont viandés comme des tanches avec des messages à propos de code intermédiaire compilé à la volé qu'ils n'arrivaient pas à décompiler.
 
J'imagine que le code original contient des "var" et autres joyeusetés... Il y a notamment des désérialisations d'objets JSON, j'imagine que le code d'origine utilise des typages dynamiques à foison.
 
Truc étrange, j'ai shooté simplement les deux attributs qui posaient problème, et ça a bien voulu compiler.
Donc avec un peu de chance, y'a pas trop de code perdu.
 
Reste plus qu'à tester avec le client et en mode pas à pas pour voir si ça fait à peu prêt pareil que le programme d'origine...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed