¿Por qué es tan fácil descompilar .NET IL-code en código fuente, en comparación con la descompilación de binarios x86 nativos? (Reflector produce código fuente bastante bueno la mayor parte del tiempo, mientras que descompilar el resultado de un compilador C++ es casi imposible.)¿Por qué es tan fácil descompilar el código .NET IL?
¿Es porque IL contiene muchos metadatos? ¿O es porque IL es una abstracción más alta que las instrucciones x86? Hice algunas investigaciones y encontré los siguientes dos artículos útiles, pero ninguno de ellos responde mi pregunta.
Hay (o hubo) descompiladores bastante buenos para C/C++, con complementos de biblioteca para diferentes versiones de Watcom, Borland, Microsoft y otros compiladores populares. P.ej. IDA. Sin embargo, eso no hace que lo que diga sea incorrecto, CLI * es * un entorno de tiempo de ejecución más abstracto, de mayor nivel pero más limpio que x86. –
IDA no es un descompilador, aunque la compañía que lo hace sí hace un descompilador llamado rayos-hex. La calidad de la descompilación x86 es de calidad mucho más baja que la calidad de la descompilación jvm o msil. –