Pregunta

Esta es una especie de pregunta de dos partes. Pero ambos se relacionan con la misma cosa.

Quiero trabajar con el código IL de una aplicación para aplicar parches. Me pregunto cuál sería el enfoque correcto. Obviamente podría descompilarlo, leer y editar el archivo de código il y luego volver a compilarlo. pero hay alguna forma de leerlo como código msil en el archivo. y tal vez editarlo en tiempo real.

Estaba tratando de editar el código descompilado de un ejecutable. pero cada vez que lo volvía a compilar, obtenía un problema con la ejecución. Como si no pudiera encontrar su punto de entrada nunca más. ¿Cómo calculo eso? Supongo que necesito saber la longitud de los comandos y sus parámetros, o para hacer que el punto de entrada sea una etiqueta o algo. Estaría bien si hubiera una plantilla de Visual Studio para algo como esto.

¿Fue útil?

Solución

Como alguien que ya ha leído el ECMA-335 especificación varias veces y implementaron un cargador de imágenes CLI en dos idiomas diferentes (con un análisis completo de IL en uno), diría que esta sería una tarea difícil para mí. Digo esto porque parece que tanto 1) no has hecho esto y 2) estás buscando una respuesta fácil. La especificación debería ser definitivamente tu punto de partida.

El procedimiento mínimo sería:

  • Cargar la imagen PE (exe o dll)
  • Analizar el código de bytes de todos los métodos y resolver símbolos
  • Aplique transformaciones de código (lo mínimo sería, por supuesto, una transformación única, como cambiar el nombre de métodos privados)
  • Guarde el resultado como una nueva imagen de PE

Editar: Esto no evitará que tenga que aprender sobre la estructura detallada de los ensamblados .NET, pero puede ahorrarle algo de tiempo en la implementación real y ayudarlo a mantener su lógica de ofuscador limpiamente separada del cargador.

Otros consejos

Para leer la MSIL, seguro que hay, en esto hilo :

ildasm.exe - Intermedio Desensamblador de lenguaje. Puede ver su código compilado en el nivel MSIL con esta herramienta.

Esto se encuentra en el SDK de Microsoft.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top