Come decompilare un file EXE .NET in codice sorgente C # leggibile?
-
05-07-2019 - |
Domanda
Ho scritto un'applicazione C # per un client un paio di anni fa, ma non ho più il codice sorgente. Tutto quello che ho è il file EXE che ho distribuito sul PC del client. Esiste un modo per generare codice sorgente C # da EXE?
Soluzione
Reflector e il suo componente aggiuntivo FileDisassembler .
Reflector consentirà di vedere il codice sorgente. FileDisassembler ti permetterà di convertirlo in una soluzione VS.
Altri suggerimenti
Quando Red Gate disse che non ci sarebbe stata più una versione gratuita di .Net Reflector, ho iniziato a usare ILSpy e Telerik's JustDecompile . Ho trovato ILSpy decompilare in modo più accurato di JustDecompile (che è ancora in beta). Red Gate ha cambiato la sua decisione e ha ancora una versione gratuita di .Net Reflector, ma ora mi piace ILSpy.
Dal sito web ILSpy ( http://www.ilspy.net/ ):
ILSpy è il browser e decompilatore di assembly .NET open source.
Caratteristiche di ILSpy
- Navigazione in assembly
- Disassemblaggio IL
- Decompilazione in C #
- Supporta lambdas e 'return return'
- Mostra la documentazione XML
- Risparmio di risorse
- Cerca tipi / metodi / proprietà (sottostringa)
- Tipo / metodo / navigazione delle proprietà basato su collegamento ipertestuale
- Navigazione di tipi di base / derivati ??
- Cronologia di navigazione
- Decompilatore da BAML a XAML
- Salva assieme come progetto C #
- Trova utilizzo del campo / metodo
- Estensibile tramite plug-in (MEF)
Aggiornamento:
15 aprile 2012, ILSpy 2.0 è stato rilasciato. Nuove funzionalità rispetto alla versione 1.0:
- Elenchi di assiemi
- Supporto per decompilare gli alberi delle espressioni
- Supporto per operatori sollevati su nullable
- Decompila in Visual Basic
- Cerca più stringhe separate da spazio (la ricerca di " Assembly manager " in ILSpy.exe troverebbe AssemblyListManager)
- Facendo clic su una variabile locale verranno evidenziate tutte le altre occorrenze di quella variabile
- Ctrl + F può essere utilizzato per cercare all'interno della vista del codice decompilata
Aggiornamento:
- ILSpy 2.1 supporta la decompilazione asincrona / wait
Reflector non è più gratuito in generale, ma lo offrono gratuitamente agli sviluppatori open source: http://reflectorblog.red-gate.com/2013/07/open-source/
Ma alcune aziende come DevExtras e JetBrains hanno creato alternative gratuite:
Reflector e il Disassemblatore di file di Denis Bauer. In realtà produce progetti sorgente da assiemi, in cui Reflector da solo mostra solo la fonte smontata.
AGGIUNTO: Il mio ultimo preferito è dotPeek di JetBrains.
Telerik JustDecompile è gratuito e ha una funzione per creare progetti da assembly .NET.
Sono sorpreso che nessuno abbia menzionato ildasm
Per eseguirlo (supponendo VS 2013, dovrebbe essere simile per altre versioni):
- Seleziona Start > Tutti i programmi > Visual Studio 2013 > Strumenti di Visual Studio.
- Fai doppio clic sul Prompt dei comandi per sviluppatori per VS2013.
- Esegui " ildasm " dal prompt dei comandi risultante.
- Nello strumento, seleziona File > Apri e apri il tuo eseguibile o DLL.
Ora puoi navigare nella struttura DLL. Fai doppio clic sui membri della classe per vedere l'IL. Usa File > Dump per esportare IL in un file.
Desideri riflettore .