2009-02-23 12 views
26

Sto cercando un disassemblatore o meglio, un decompilatore per .net. La situazione è che il codice sorgente di un assembly scritto da uno dei miei predecessori è andato perso e mi piacerebbe dare un'occhiata per vedere cosa sta facendo.A .net disassemblatore/decompilatore

So che ildasm viene fornito con l'installazione di Visual Studio in modo da poter accedere a MSIL, ma speravo che ci fosse un programma abbastanza intelligente per tornare al codice C# (o migliore approssimazione).

Esistono strumenti per questo?

(In caso contrario, suppongo che sarà una buona scusa per me per sedersi e iniziare a imparare MSIL)

risposta

40
+0

red gate = awesome – annakata

+0

Anche se mi piacerebbe essere d'accordo con annakata, chiaramente lui/lui, è sbagliato. Riflettore = doppio fantastico! :) – Russ

+6

Il cancello rosso non ha originariamente scritto Reflector. L'unico altro strumento che ho usato da loro (SQL Intellisense per SQL Server 2005) era lento. :) – mmcdole

7

riflettore è la strada da percorrere, ma se non è possibile utilizzare che per qualche motivo, le navi Microsoft un disassemblatore chiamato ILDASM con il quadro.

Una buona fonte di conoscenza di MSIL è il libro Expert .NET 2.0 IL Assembler di Serge Lidin.

55

Ora che Red Gate hanno iniziato la carica per lo strumento .NET Reflector si potrebbe voler controllare queste alternative libero invece ...

Telerik JustDecompile

JetBrains dotPeek

(Open Source) ILSpy

+1

Ho appena provato la beta di ILSpy, ed è buono come Reflector per me. Meno la seccatura della licenza. –

+0

dotPeek è una copia eval: sembra quasi buono come Reflector, ma sembra funzionare un po 'più lentamente.ILSpy fa il trucco per me, anche se la sua interfaccia non è così sdolcinata - l'ordinamento e il trattamento dei generici lasciano entrambi un po 'a desiderare, ma sono abbastanza buoni, specialmente al prezzo! – yoyo

+2

A partire dal 2012 dotPeek è ora completamente gratuito e non più un processo di valutazione. –

1

Ok ,

Ho provato un progetto. ILSpy

Telerik JustDecompile

.NET Reflector Demo

Tutto può creare progetto Visual C#. Il codice generato non è stato compilato per JustDecompile e Reflector. In un caso, ILSpy ha creato un codice compilato (è stato necessario impostare solo i riferimenti) Gli errori IlSpy non sembravano così completati come quelli trovati in altri. Tutti i codici generati possono essere corretti se si conosce bene C#.

Una direzione interessante può essere utilizzata per decompilare il codice utilizzando sia JustDecompile che Ilspy e unire i codici corretti perché questi decompilatori (e anche il terzo) sembrano fare errori diversi.