2011-09-27 25 views
5

Tengo un solo dll compilado que necesito cambiar un poco. Fue escrito por mí hace medio año, pero he perdido el código fuente. Hay una sola cadena codificada en el mismo (que es un nombre de archivo)¿Cómo editar una cadena codificada en una DLL compilada?

necesito cambiarlo TestPage.html-TestPage1.html (que no es mucho más largo)

Cómo hacer eso? La cadena es anónima, la pieza correspondiente del código es:

... + folder + "TestPage.html" 

hay ninguna variable se asigna a.

Gracias de antemano.

EDITAR: No quiero volver a compilar el código C# después de extraerlo con las herramientas Reflector-like!

+0

Si no quiere volver a compilar el código C# después de extraerlo, descompile a IL en su lugar - de cualquier manera la respuesta que abatishchev ha publicado ** es ** la forma correcta de hacerlo – Justin

+0

Si no desea volver a compilar , te quedaste sin opciones. – abatishchev

Respuesta

6

Puede usar CFF Explorer, que proporciona una vista muy cruda en los ensamblados .NET. También proporciona la posibilidad de ver e incluso modificar el UserString-stream (encuéntrelo en .NET Directory > MetaData Streams > #US).

El UserString-stream almacena literales de cadena como el que describió. Debería poder encontrar su cadena particular con la función find y modificarla. Sin embargo, hay una limitación: no puede usar una cadena con una longitud diferente (más corta o más larga). Esto estropearía los índices de todas las cadenas que seguirían más adelante en la secuencia de UserString y todas las compensaciones de las otras secciones. Por lo tanto, desafortunadamente creo que cambiarlo a TestPage1.html no funcionará, ya que es un personaje más largo.

+0

Funciona como un encanto: acabo de agregar un espacio vacío (código 00) y solucionó mi problema de todos modos. –

+0

funcionó para mí .. espléndido –

8

Utilice Reflector (u otra herramienta similar) para descompilar IL en C# (u otro lenguaje CLR), y luego edítelo y vuelva a compilarlo.

+0

No puedo. Su código es bastante complicado dll: con muchas funciones anónimas, archivos, clases parciales en él. –

+2

@IlyaSmagin ¿Por qué no? Incluso si no puede descompilar a C# que se crea, definitivamente puede descompilar a IL que se genera. – Justin

4

Puede usar la herramienta gratuita ILSpy para descompilar el código y los recursos de un archivo .NET-dll.

+3

¿Y cómo exactamente esto me ayudaría con mi problema? –

Cuestiones relacionadas