2008-09-20 686 views

Respuesta

3

¡Reflector Pro le permite hacer exactamente esto!

4

Intenté esto hace mucho tiempo sin éxito. El reflector ha mejorado mucho desde entonces, así que me imagino que será posible hoy.

De hecho, da un poco de miedo si lo piensas bien. Alguien podría descompilar su aplicación y tener el código completo, luego modificarlo y distribuir su propia versión del mismo. Todo sin ser fuente abierta. Pero de nuevo es por eso que "ellos" crearon ofuscadores.

+6

También es por eso que crearon el EULA. – TraumaPony

3

No puedo encontrar el enlace, pero alguien usó la fuente del reflector para compilar una versión de depuración del marco 1.1 que podría atravesar. Intenté con el framework 2.0 y encontré demasiados errores para que valga la pena.

Si desea probar este inicio con un complemento como FileDisassembler. En mi breve experiencia con esto, descubrí que había algunos errores para corregir pero no para mal.

Con una biblioteca de tamaño pequeño-medio este método debería ser muy factible.

+0

Dado que existen bastantes implementaciones nativas de C en el Marco NET, creo que esto * es muy poco probable *. – stephbu

+0

No sugiero que pueda acceder a las implementaciones de C, pero si vuelve a compilar la fuente de .NET no hay ninguna razón por la que no pueda acceder al código que llama al código nativo. – Brownie

0

Es posible pero no realmente práctico en aplicaciones más grandes y complejas, especialmente cuando se han utilizado muchas de las estructuras más recientes como lambdas e inicializadores (se obtiene un montón de nombres de variables que contienen signos de dólar como CS $ 4 $ 0000 que tienen que ser reparado manualmente). Incluso las declaraciones de cambio simples pueden causar un código de spaghetti muy feo lleno de declaraciones goto en Reflector.

He tenido mucha más suerte descompilando en MSIL y volviendo a compilar en modo de depuración. A continuación, puede colocar puntos de interrupción en los archivos IL y utilizar todas las funciones habituales de depuración en VS. MSIL parece un poco atemorizante al principio, pero se entiende muy rápido.

Este excelente artículo explica cómo hacerlo: http://www.codeproject.com/KB/dotnet/Debug_Framework_Classes.aspx

1

No, es necesario el archivo (PDB) archivo de símbolos que pertenece a la aplicación que está intentando depurar.

Reflector le permite pasar de IL a código .NET legible, pero mantiene el significado solo el código exacto escrito por el desarrollador. Entonces, incluso si tuviera el PDB y la fuente de Reflector, no coincidiría para la depuración.

Supongo que podría usar la salida de fuente del reflector para crear un proyecto .NET y generar su propia versión del ensamblado que desea depurar. Sin embargo, normalmente es un verdadero dolor y, en el caso del framework .NET, Microsoft publica la información de depuración para que la use cualquiera que esté interesado.

Recuerdo que en un momento había un complemento para depurar en Reflector, pero nunca pude hacer que funcionara.

Configuring Visual Studio to Debug .NET Framework Source Code
MSDN: PDB Files

1

lo he visto y lo ha hecho antes. Lo usé para mostrarle a mi jefe que nuestra aplicación no estaba tan protegida como él pensaba. Tomó una DLL, obtuvo el código fuente, y bam, prácticamente tuvo un ataque al corazón.

Hay escenarios en los que .Net Reflector se rompe, pero es difícil de hacer, lo sé porque lo he intentado activamente.Los buenos ofuscadores harán que el código sea tan inmanejable/ilegible (como sobrecargar la función "a" para hacer una tonelada de cambios dependiendo de los parámetros) que ver la fuente no sirve, pero aún puedes depurar: buena suerte qué está pasando.

5

El plug-in Deblector para Reflector le permite depurar directamente desde Reflector.

+0

¿Alguna vez ha conseguido que esto funcione? –

+0

Lo he hecho funcionar, aunque solo puedes depurar el IL. – Ian

Cuestiones relacionadas