Conozco las herramientas de Java para manipular, generar y descompilar el bytecode de JVM (ASM, cglib, jad, etc.). ¿Qué herramientas similares existen para el bytecode CLR? ¿La gente hace la manipulación del código de bytes para el CLR?¿Qué herramientas CLR/.NET bytecode existen?
Respuesta
Bytecode es un formato binario. Los ensamblados .NET funcionan bastante diferente en términos de cómo almacenan las instrucciones de ejecución.
En lugar de compilar una estructura tipo bytecode, los lenguajes .NET se compilan en un lenguaje intermedio (de hecho, se llama precisamente eso - IL).
Este es un lenguaje legible por humanos que se parece a una versión del ensamblador orientada a objetos.
Por lo tanto, en términos de examinar o manipular el IL para ensamblajes individuales, las herramientas como Reflector e ILDASM le permiten ver convenientemente el IL para cualquier ensamblaje.
La manipulación es un poco diferente, sugiero echar un vistazo a algunas de las herramientas de AOP en el espacio .NET. También sugiero echar un vistazo a Phoenix, que es un proyecto de compilación que MS tiene en proceso. Tiene algunas características de manipulación post-compilación realmente geniales.
Si quiere saber más acerca de las herramientas .NET AOP, le sugiero que abra otra pregunta (esa es otra lata de gusanos).
También hay varios libros que le enseñarán los pormenores de IL. No es un lenguaje muy complicado de aprender.
Reflector siempre es bueno, pero Mono.Cecil es la mejor herramienta que puede pedir en general. Es invaluable para manipular CIL de cualquier manera.
Mono.Cecil es una gran herramienta como ASM. Es un subproyecto de Mono, y fuente totalmente abierta. Incluso proporciona better feature que System.Reflection.
NDepend le permite hacer .NET ensamblajes de análisis estático (métricas de código, análisis de dependencia, etc.). NDepend es muy útil para obtener una visión general de la estructura de sus ensamblados .NET usando la matriz de dependencia, gráficos de dependencia y métricas treemap visualizations.
También está integrado con Reflector: por ejemplo, puede detectar los tipos y métodos importantes en sus ensamblajes utilizando respectivamente un Tipo/Método Rank metric (una métrica de código similar al Rango de página de Google) y salta directamente de NDepende a Reflector para obtener el código desensamblado en C#, VB.NET, etc.
- 1. ¿Qué herramientas XSLT 2.0 existen?
- 2. ¿Qué herramientas de edición T4 existen?
- 3. Qué herramientas de autotest existen para Clojure
- 4. ¿Qué herramientas gratuitas de formato SQL existen?
- 5. ¿Qué otras herramientas de analítica web existen?
- 6. ¿Qué herramientas existen para probar el código .net multiproceso?
- 7. ¿Existen herramientas visuales para MongoDB (para Windows)?
- 8. ¿Existen herramientas que ayuden a organizar #includes?
- 9. Ruby to Actionscript3 Bytecode
- 10. ¿Qué marcos de pruebas de mutaciones existen?
- 11. ¿Existen herramientas/técnicas para depurar manejadores de eventos jQuery?
- 12. ¿Existen útiles herramientas de análisis estático para bases de datos?
- 13. ¿Existen herramientas programáticas para la conversión de Perl a Python?
- 14. ¿Existen herramientas de refactorización para la programación Emacs C++?
- 15. ¿Existen buenas herramientas para integrar GWT con ASP.Net?
- 16. ¿Qué tipo de herramientas de refactorización de bases de datos existen?
- 17. ¿Qué herramientas de analizador sintáctico basadas en gramática existen para ruby?
- 18. ¿Qué herramientas existen para convertir una aplicación Delphi 7 en C# y .Net framework?
- 19. Qué herramientas de C# existen para desencadenar, poner en cola, priorizar tareas dependientes
- 20. ¿Qué cadenas de herramientas existen para la integración continua con C++?
- 21. ¿Qué cadenas de herramientas alternativas (de trabajo) existen para el desarrollo x86 C++ en Linux?
- 22. ¿Qué visualizadores de depuración existen?
- 23. ¿Qué bibliotecas JavaScript multiplataforma existen?
- 24. ¿Por qué existen las ID?
- 25. ¿Qué trampas existen para Django?
- 26. GHC Core como "bytecode"?
- 27. java bytecode editor?
- 28. Bytecode vs. Interpretado
- 29. Tipos en Bytecode
- 30. ¿Es posible transformar el bytecode LLVM en bytecode de Java?
"Los ensamblados NET funcionan bastante diferente en términos de cómo almacenan las instrucciones de ejecución" no, no ... todo finalmente se compila en un "formato binario" . Este formato binario tiene una correspondencia de 1 a 1 con IL. –