¿Cómo descompilo un .NET EXE en código fuente C # legible?

Hace un par de años, escribí una aplicación de C # para un cliente, pero ya no tengo el código fuente. Todo lo que tengo es el EXE que implementé en la PC del cliente. ¿Hay alguna manera de que pueda generar el código fuente de C # desde el EXE?

Reflector y su complemento FileDisassembler .

Reflector permitirá ver el código fuente. FileDisassembler le permitirá convertirlo en una solución de VS.

Cuando Red Gate dijo que ya no habría una versión gratuita de .Net Reflector, comencé a usar ILSpy y JustDecompile de Telerik. He encontrado ILSpy para descomstackr con más precisión que JustDecompile (que todavía está en Beta). Red Gate ha cambiado su decisión y todavía tiene una versión gratuita de .Net Reflector, pero ahora me gusta ILSpy.

Del sitio web ILSpy ( http://www.ilspy.net/ ):

ILSpy es el navegador y descomstackdor de ensamblado .NET de código abierto.

Características ILSpy

  • Navegación de conjunto
  • Desassembly IL
  • Descomstackción a C #
  • Admite lambdas y ‘yield return’
  • Muestra documentación XML
  • Ahorro de recursos
  • Buscar tipos / métodos / propiedades (subcadena)
  • Tipo / método / navegación basada en hipervínculo
  • Navegación de tipos base / derivados
  • Historial de navegación
  • Descomstackdor de BAML a XAML
  • Guardar ensamblaje como proyecto de C #
  • Encuentra el uso del campo / método
  • Extensible a través de complementos (MEF)

Actualizar:

15 de abril de 2012, ILSpy 2.0 fue lanzado. Nuevas características en comparación con la versión 1.0:

  • Listas de assembly
  • Soporte para descomstackr árboles de Expresión
  • Soporte para operatores levantados en nulables
  • Descomstackr a Visual Basic
  • Busque varias cadenas separadas por espacio (buscando “Assembly manager” en ILSpy.exe encontraría AssemblyListManager)
  • Al hacer clic en una variable local, se resaltarán todas las demás ocurrencias de esa variable
  • Ctrl + F se puede usar para buscar dentro de la vista del código descomstackdo

Actualizar:

  • ILSpy 2.1 admite la descomstackción async / await

Reflector ya no es gratuito en general, pero lo ofrecen de forma gratuita a los desarrolladores de código abierto: http://reflectorblog.red-gate.com/2013/07/open-source/

Pero algunas compañías como DevExtras y JetBrains han creado alternativas gratuitas:

DevExtras CodeReflect

JetBrains DotPeek

Reflector y el complemento Desarmador de archivos de Denis Bauer. En realidad, produce proyectos fuente a partir de ensamblajes, donde Reflector solo muestra la fuente desensamblada.

AGREGADO: Mi último favorito es JetBrains ‘ dotPeek .

Telerik JustDecompile es gratuito y tiene una función para crear proyectos a partir de ensamblajes .NET.

Me sorprende que nadie haya mencionado el ildasm de Microsoft . Puede que no sea tan bonito como ILSpy o Reflector, pero viene con Visual Studio y muchos desarrolladores ya lo tienen.

Para ejecutarlo (suponiendo VS 2013, debería ser similar para otras versiones):

  1. Seleccione Inicio> Todos los progtwigs> Visual Studio 2013> Herramientas de Visual Studio.
  2. Haga doble clic en el símbolo del sistema del desarrollador para VS2013.
  3. Ejecute “ildasm” desde el símbolo del sistema resultante.
  4. En la herramienta, seleccione Archivo> Abrir y abra su ejecutable o DLL.

Ahora puede navegar por la estructura DLL. Haga doble clic en los miembros de la clase para ver el IL. Use Archivo> Volcar para exportar IL a un archivo.

Quieres reflector .