Je dois convertir le code IL en C#. J'ai un assemblage et je lis cet assemblage. Je reçois MethodBody de MethodInfo et le methodbody a une méthode GetILAsByteArraY() qui retourne un tableau d'octets maintenant je veux convertir ce code IL en C#. S'il vous plaît aidez-moi à résoudre ce problème.Conversion du code IL en C#
Répondre
Ne pas réinventer la roue; utilisez Lutz Roeder .NET Reflector.
Ce n'est plus Lutz. – Will
Je pense qu'il est clairement évident qu'il essaie de créer une autre roue comme celle de .NET Reflector et il veut savoir comment c'est fait. Lutz ne devrait pas nécessairement être le seul homme au monde qui sait comment le faire. –
@HasanKhan étant donné le choix de réponse d'OP, il est plutôt content que Lutz soit le seul homme :) – nawfal
Voyons voir si je parviens à l'obtenir en premier: .NET Reflector! Cela devrait vraiment être une FAQ ...
Ne pouvez-vous pas faire cela avec Reflector?
Vous pouvez charger un ensemble et voir comme VB.net/C#/IL ...
Vous devez simplement utiliser .NET Reflector si vous avez l'assemblée. Essayez également le file gen addon.
Il n'y a aucun outil dans le BCL qui fera cela; Cependant, il existe un excellent outil appelé Reflector, pour lequel vous pouvez écrire vos propres compléments. Donc, vous pourriez probablement l'utiliser pour obtenir les données que vous voulez.
Reflector fait cela. Peut-être pourriez-vous utiliser Reflector against Reflector et apprendre comment il gère le problème. Vous pourriez également dire pourquoi vous voulez faire ceci - il pourrait y avoir une meilleure solution à votre problème global. Permettez-moi d'être le premier à vous suggérer de prendre une copie du réflecteur de Red Gate.
Les internes des réflecteurs ont été obscurcis en utilisant des non-imprimables (au moins, lutz l'a fait). Alors que oui vous pourriez réfléchir sur lui-même une meilleure question serait-il vraiment la peine que ... – JoshBerke
Oui, c'est ce que je soupçonnais. C'est pourquoi je lui ai demandé pourquoi il voulait le faire. –
Peut-être que vous devriez essayer Dis # si vous ne voulez pas réinventer la roue ... C'est presque le meilleur outil pour convertir le code NetDASM a un outil qui vous permet de convertir C# en IL. Peut-être devriez-vous jeter un coup d'œil à cela.
Ré-inventer la roue sûrement une meilleure façon d'apprendre! vous devrez créer votre propre classe qui convertirait iL en C#. Cela nécessite la connaissance du langage intermédiaire.
Je suppose que vous avez déjà converti le tableau d'octets aux instructions IL comme nous le voyons dans ildasm.exe, utilisant Reflection.Emit.OpCodes, OpCode.OperandType, BitConvertor.ReadByte(), etc. BitConvertor.ReadInt32
Si vous voulez le faire vous-même, vous pouvez commencer à partir de l'ancien Cecil.Decompiler et l'améliorer, voir the source code et an old post of Jb. Evain announcing the project (Lien vers le bas).
Les deux liens sont cassés. –
Fixé le premier, ne peut rien faire à propos de la seconde car je ne sais pas pourquoi il a mis son blog hors ligne, même s'il le référence toujours sur Twitter. –
Pour les moteurs de recherche, Reflector n'est plus gratuit. Mais un outil plus récent et meilleur et pour ne pas mentionner GRATUIT est offert par telerik appelé JustDecompile. Je viens de télécharger ceci et c'est tellement génial et c'est juste une version bêta. Apparemment, telerik promet gratuitement pour toujours.
Le réflecteur Lutz Roeder a été acheté et n'est plus disponible en téléchargement gratuit.
Il existe maintenant un outil gratuit (encore une fois) appelé ILSpy. Je l'ai trouvé très bon, et il générera non seulement le code C# de IL mais créera également un projet .csproj
si décompiler un ensemble de DLL entier.
- 1. conversion du code Java C++
- 2. Conversion de code C++ non géré en C#
- 3. Conversion du code C++ Builder en C# .NET (TComponent, TOjbect, TList, etc.)
- 4. Conversion numérique en C/C++
- 5. Conversion d'un CFG en IL
- 6. conversion vidéo en C#
- 7. Conversion de Ruby en C#
- 8. priorité de conversion en C++
- 9. Conversion d'événements C# en VB.NET
- 10. Conversion de code VB.NET en VBScript
- 11. Conversion de type en C#
- 12. éléments de conversion port automatique de code C à C++
- 13. Conversion du script shell en Objective-C CLI
- 14. Conversion d'un projet de C++ en C#
- 15. Code source du validateur xml en C
- 16. Conversion de Java en C#
- 17. Y at-il un outil pour convertir du code XAML en C# (code derrière)?
- 18. Conversion de ObjectDataProvider XAML en C#
- 19. Conversion du texte en nombre
- 20. conversion du prototype en jquery
- 21. Conversion du texte en html
- 22. Opérateurs de conversion en C++
- 23. Conversion d'un objet défini dans le code ASP.NET en objet créé en C#?
- 24. Problème lors du portage du code VB.NET en C#
- 25. Comment récupérer du code HTML en C/C++
- 26. Conversion d'un pointeur en tableau en C++
- 27. Affichage du code étendu du compilateur - C++
- 28. Conversion & en & dans Objective-C
- 29. Conversion de SVG en PNG en utilisant C#
- 30. problème dans la conversion Datetime en C#
Décision unanime! –
Pour quoi avez-vous besoin de cela? Si vous décrivez votre situation de manière un peu plus détaillée, nous pouvons peut-être suggérer plus de .NET Reflector. –
@Anton Nous ferions probablement mieux de ne pas comprendre ce hackery. –