J'ai un programme que j'utilise fréquemment qui est fabriqué avec .NET. Ce programme a un petit bug qui est très gênant et que le développeur de l'application est introuvable. P>
J'ai trouvé l'emplacement du problème dans le réflecteur et je veux simplement ajouter une seule instruction IF ici, puis recompiler le programme. P>
Quel est le moyen le plus simple de le faire? P>
J'ai essayé d'utiliser la fonction d'exportation dans le réflecteur, mais cela ne semble pas fonctionner parfaitement. Par exemple, beaucoup d'utilisation de directives sont manquantes et que les énumjets qui sont renversés vers l'intérieur ne sont également pas exportés correctement. Je crois que je peux résoudre ce problème avec un travail, mais je me demande s'il y a un moyen plus facile de le faire. P>
Le programme est un seul fichier exécutable de fichier p>
fait! Je n'ai utilisé que le programme fixe quelques minutes maintenant, mais cela semble fonctionner comme avant, à l'exception du bogue :) P>
J'ai également rencontré certains problèmes avec les paramètres de l'application. Dans % Appdata% \ PROGRAMNAMNAME PROGRAMME EM> Il y avait un dossier appelé quelque chose comme Programname.exe_url_qa5i3p42AomuvoxPuxuficvbmngksgjs em> où tous les paramètres sont stockés. Ma nouvelle exécutable a créé un nouveau dossier comme celui-ci avec différentes lettres aléatoires à la fin et avec les paramètres par défaut. Pour copier les paramètres utilisés avant de copier tout le contenu de l'ancien dossier sur le nouveau. P>
6 Réponses :
Je ne pense pas qu'il y ait un moyen plus facile de le faire que ce que vous avez déjà mentionné. En fait, j'ai décompilé un programme avec Ilasm pour quelque chose de similaire et il a fallu beaucoup de bricolage. P>
S'il y a une méthode plus facile, je voudrais le savoir aussi. P>
Vous pouvez utiliser l'ilas et ilasas pour faire une ronde. Bien que cela soit impraticable pour de gros changements, je pense que cela devrait faire l'affaire dans votre cas. P>
Si le programme est simple, en théorie, vous pouvez utiliser le réflecteur pour renverser tout le programme sur C #, apporter le changement et le recompiler. P>
Vous pouvez également essayer un outil tel que Ildasme < / a>, qui devrait vous permettre d'extraire l'IL, faites votre changement (dans MSIL) et que vous assemblez (en utilisant Ilasm ). Évidemment, pour faire cela, vous devrez déterminer comment écrire votre changement d'IL, vous devrez donc probablement faire des expériences pour voir comment si les déclarations compilent. P>
Je soupçonne que les deux prendront un peu de malchance pour obtenir le recompilement au travail. P>
bonne chance. p>
Si vous voulez travailler, postez-moi et faites le moi savoir, je serais très intéressé par la façon dont vous avez fait cela. P>
Merci d'avoir accepté cela comme la réponse Erik, cela ressemble à ce que c'est ce qui a fonctionné pour vous, mais pour d'autres personnes qui lisent ceci découvrent certainement le réflexil ( Sebastien.lebrette.free.fr/reflexil ) (comme mentionné dans la réponse de JB Evain), car cela vous permettra de passer directement à l'assemblage avec le code C # sans avoir à vous soucier de la Il, et enregistrer une version patchée de l'assemblée, tout de réflecteur facilement facilement. Je vous recommande vivement de le vérifier, c'est un excellent outil.
Essayez ceci .NET réflecteur Addin . p>
Cela a fonctionné pour moi. Il crée parfois des balises "complétés générées" qui ne peuvent pas être respectées. Mais vous pouvez facilement résoudre ce problème manuellement. P>
Je vous suggère d'utiliser le Reflexil Plugin pour réflecteur . Il vous permet de modifier facilement des assemblages et même de remplacer le corps d'une méthode par votre propre code C #. P>
Maintenant, si cela fonctionne comme si cela dit qu'il fait sur le site Web fantastique. +1. Cecil a l'air génial. "Modifier les assemblages à la volée". Wow! Que puis-je dire de plus. Continuez le grand travail JB.
Merci Simon. Tous les crédits pour le réflexiliennes vont à mon ami Sébastien LeBreton qui a fait un travail vraiment excellent à la bride Cecil et à un réflecteur.
Voir ce qui suit pour un exemple. J'ai effectivement trouvé qu'il est assez difficile de localiser les options de sauvegarder l'assemblage. Cummps.be/Reverse-Engineering-with-Reflector-and-Reflexil
Telerik juste décompile (gratuit) Ensuite, le réflexe plug in p>
travail de 2 min avec ce qui précède (j'ai essayé toutes les autres méthodes !!) p>
Pouvez-vous ajouter plus de détails sur la façon d'utiliser les deux?