Compiladores

Páginas: 10 (2471 palabras) Publicado: 12 de noviembre de 2012
Modificando el Código Intermedio de Microsoft - MSIL[aprende a "destripar" un ensamblado y hacerle los cambios necesarios] Fecha: 31/Oct/2005 (31-10-05)
Autor: Percy Reyes Paredes - bigpercynet@hotmail.com
          percy's blog               percy's artículos Microsoft .NET Y SQL Server  | |

En este artículo usted aprenderá a "destripar" un ensamblado .exe y hacerle los cambios necesariossi es que así se requiere. Pero antes de ir al "grano", vale resaltar y aclarar algunos conceptos sumamente importantes.
Cuando se suele hablar con respecto al código intermedio nos referimos a ese código que es generado por un determinado lenguaje integrado con el .NET Framework, este código se encuentra encapsulado en un .exe o .dll. Por ejemplo, el MSIL generado por Visual Basic .Net  o porVisual C# .Net es tomado por el JIT, convertido a lenguaje máquina y ejecutado. .NET Framework nos brinda un kit de herramientas que nos facilitan realizar muchas tareas específicas como la creación, implementación y administración de aplicaciones y componentes .NET Framework. Todas estas herramientas pueden ejecutarse desde la línea de comando, a excepción por ejemplo de DbgCLR.exe. Bueno, hastaahora hemos hablado del código MSIL, pero usted se preguntará, es difícil de comprender todo esto ?, la respuesta es no. A continuación le expongo un trozo de código MSIL para que vaya familiarizándose.
-------------------------------------------------
.method private instance void TextBox1_Validated(object sender,-------------------------------------------------class [mscorlib]System.EventArgs e) cil managed-------------------------------------------------
{-------------------------------------------------
// Code size 20 (0x14)-------------------------------------------------
.maxstack 8-------------------------------------------------
IL_0000:nop-------------------------------------------------
IL_0001: ldarg.0-------------------------------------------------
IL_0002: callvirt instance class [System.Windows.Forms]System.Windows.Forms.Label
Percynet_ErrorProvider.Form1::get_Label2()-------------------------------------------------
IL_0007: ldstr"validado"-------------------------------------------------
IL_000c: callvirt instance void [System.Windows.Forms]System.Windows.Forms.Control::
set_Text(string)-------------------------------------------------
IL_0011: nop-------------------------------------------------
IL_0012: nop-------------------------------------------------IL_0013: ret-------------------------------------------------
} // end of method Form1::TextBox1_Validated |
Cada cosilla de este código será explicado más adelante.
Sigamos. Tenemos herramientas de configuración e implementación, de depuración, de seguridad, y otras generales. En este artículo haremos uso de dos herramientas generales, tanto del ilasm.exe,para generar un ensamblado(.dll o .exe), como también, del ildasm.exe para "destripar" el ensamblado. Cada una de esta herramientas usan muchas opciones para arrojar resultados diversos, es su deber investigar al respecto, en esta vez tan sólo se ilustrarán algunas de ellas. Ahora la pregunta es: ¿Cuándo es necesario desensamblar el MSIL?, pues bien, cuando se compila código en un lenguaje deprogramación que no admite todos los atributos de metadatos en tiempo de ejecución. Particularmente la primera vez que usé esta herramienta fue cuando tuve que editar mi aplicación en una máquina que tan sólo tenía instalada el .NET Framework, pues como no había Visual Studio .NET, me vi en la necesidad de desensamblarla, hacer los cambios necesarios y listo... a ensamblar se ha dicho, pues ya...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Compiladores
  • Compilador
  • COMPILADORES
  • Compiladores
  • Compiladores
  • Compiladores
  • compiladores
  • Compiladores

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS