2011-01-05 344 views
14

tenemos una aplicación en producción y el código está en formato precompilado. El desarrollador que desarrolló esa aplicación abandonó la empresa y no tenemos ninguna copia de seguridad del código fuente. el único acceso que tenemos es código pre compilado en el servidor. Tenemos que solucionar los problemas en la aplicación ahora.Descompilar código fuente precompilado ASP.NET

¿Hay alguna manera de Descompilar (extracto de código fuente real) el código precompilado?

Respuesta

12

Abrir los archivos DLL en el .NET Reflector.

+0

No hay una DLL en el código precompilado. Las únicas cosas que veo son páginas aspx y algunas otras imágenes, carpetas de máscaras – msbyuva

+0

@msbyuva: ¿Revisaste la carpeta bin de la aplicación? – adamjford

+0

Veo algunos dlls, los abrí a través de .NET Reflector, luego los desensamblé pero no vi ningún código. Y también ¿cómo puedo ver los archivos .aspx.cs? – msbyuva

2

Inicio con:

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

... además:

http://www.denisbauer.com/NETTools/FileDisassembler.aspx

Vas a tener que volver a compilar el último para vincularlo contra v6.5 del reflector (la última , a partir de esta publicación.) Es un buen complemento si desea evitar tener que copiar y pegar una sola clase en archivos a mano. Se volcará un ensamblaje completo como archivos .cs. Creo que incluso puede generar un csproj.

Ambas herramientas son gratuitas.

+0

No hay DLL en el código precompilado. Lo único que veo son páginas aspx y algunas otras imágenes, carpetas de máscaras ... ¿Cómo puedo obtener las páginas aspx.cs? – msbyuva

+0

Ya no hay "páginas" aspx.cs, que en realidad no son páginas, sino archivos de código fuente. El compilador de C#, como todos los compiladores, toma una colección de archivos fuente y los convierte en uno o más DLL. No podrá recuperar los archivos .cs originales. Tienes que volcar todas las clases como archivos fuente usando las herramientas de arriba, y luego agregarlas a un nuevo proyecto web junto con las páginas aspx existentes que tienes. – x0n

+0

Gracias ... como sugerí utilicé el reflector y puedo ver todo el código en los archivos de clase y el código detrás de los archivos. Bueno, no entendí cómo usar la segunda herramienta File Dissembler ... He extraído todos los dll del reflector .NET, ¿cómo puedo usar la 2da herramienta para extraer el código fuente de esos dll extraídos ??? Lamento molestarte ... – msbyuva

0

me encontré con que DLL puede ser sólo leen utilizando la herramienta .NET Reflector pero no puede extraer el código fuente. Y también una vez que los formularios web se precompilan, ni siquiera podemos recuperar el código detrás de los archivos. Todo lo que podemos hacer es depurar y analizar el Código.

+0

.NET Reflector es bueno pero no es una herramienta gratuita, encontré dotPeek que es gratis - http://www.jetbrains.com/decompiler/ – msbyuva

0

Tuve un problema similar y utilicé Reflector para descomprimirlo. Obtuve el código fuente, luego cambié el bit que quería y lo reconstruí. Luego copié ese dll de nuevo en el sitio de producción. Comenzó a reflejar mis cambios. Fue muy fácil y nada difícil, tal vez porque el sitio precompilado tenía dlls para cada página y era actualizable, por lo que solo tenía un archivo de código subyacente en dll.

Como referencia: http://www.reflector.net/

0

Cuando u instalar reflecter.its .net importación en Visual Studio. y luego vio las herramientas del reflector .net en la barra de menú.

Haga clic en el reflector .net >> Elija Asseblies (archivo Dll) para depurar.

3

Para actualizar @ respuesta de xActivar:

Debido a una reciente desastre control de código fuente que tenía que recuperar mi proyecto a partir de los archivos DLL. Así que por desgracia estoy bien informado sobre el procedimiento:

  1. Get Net Reflector desde aquí: http://www.red-gate.com/products/dotnet-development/reflector/

  2. No pareces a necesitar FileDisassembler.

  3. Cualquiera de cargar los contenedores en el reflector o haga doble clic en ellos.

  4. mente que el marco .Net no podría haber mantenido la estructura de archivos proyecto original. Por lo tanto, si algunas de sus páginas ASPX comparten el mismo nombre básico de clase en diferentes archivos .cs (la etiqueta I.E. Inherits es la misma, pero la etiqueta CodeFile es diferente), no podrá simplemente "exportar el código fuente". No vaya a exportar archivos fuente a ciegas. No funcionará

  5. Todavía queda algo de trabajo por hacer antes de poder simplemente arrancar el botón de compilación anterior. Por ejemplo, los archivos DLL pueden referirse directamente a los getter/setters de la propiedad. Tendrás que arreglar eso.

Buena suerte.