2009-02-23 6 views
26

Je cherche un désassembleur ou mieux, un décompilateur pour .net. La situation est que le code source d'une assemblée écrite par un de mes prédécesseurs est perdu et j'aimerais voir ce qu'il fait.Un désassembleur/décompilateur .net

Je sais que ildasm est livré avec l'installation de Visual Studio, donc je peux accéder au MSIL, mais j'espérais qu'il y avait un programme assez intelligent pour revenir au code C# (ou meilleure approximation).

Existe-t-il des outils pour cela?

(Dans le cas contraire, je suppose que ce sera une bonne excuse pour moi de me asseoir et commencer à apprendre MSIL)

Répondre

40

Avez-vous regardé Reflector?

http://www.red-gate.com/products/reflector/

+0

red gate = awesome – annakata

+0

Bien que je voudrais être d'accord avec annakata, clairement, il est faux. Réflecteur = double génial! :) – Russ

+6

Red gate n'a pas écrit à l'origine Reflector. Le seul autre outil que j'ai utilisé d'eux (SQL Intellisense pour SQL Server 2005) était lent. :) – mmcdole

7

réflecteur est le chemin à parcourir, mais si vous ne pouvez pas l'utiliser pour une raison quelconque, Microsoft navires un désassembleur appelé ildasm avec le cadre.

Une bonne source de connaissances MSIL est le livre Expert .NET 2.0 IL Assembler de Serge Lidin.

55

Maintenant que Red Gate ont commencé à charger pour l'outil NET Reflector vous pouvez vérifier ces alternatives gratuites au lieu ...

Telerik JustDecompile

JetBrains dotPeek

(Open Source) ILSpy

+1

J'ai juste essayé la version bêta d'ILSpy, et c'est aussi bon que le réflecteur pour moi. Moins les tracas de licence. –

+0

dotPeek est une copie eval - ressemble presque aussi bien que Reflector mais semble courir un peu plus lentement.ILSpy fait l'affaire pour moi, bien que son interface ne soit pas tout à fait aussi luisante - le tri des membres et le traitement des génériques laissent un peu à désirer, mais assez bon, surtout au prix! – yoyo

+2

À partir de 2012, dotPeek est maintenant entièrement gratuit et n'est plus un essai d'évaluation. –

1

Ok ,

J'ai essayé un projet. ILSpy

Telerik JustDecompile

.NET Reflector Démo

Tout peut créer projet Visual C#. Le code généré n'a pas été compilé pour JustDecompile et Reflector. Dans un cas, ILSpy a créé un code qui a été compilé (seules les références devaient être définies) Les erreurs IlSpy ne semblaient pas aussi compliquées que celles trouvées dans d'autres. Tout le code généré peut être corrigé si l'on connaît bien le C#.

Une direction intéressante peut être utilisée pour décompiler le code en utilisant à la fois JustDecompile et Ilspy et fusionner les codes qui sont corrects car ces décompilateurs (et le troisième aussi) semblent faire des erreurs différentes.