Are .net exes real executables?

.net

Solution

.Net executables contain MSIL (Microsoft Intermediate Language) byte code, similar to Java bytecode. They are not native Intel32 code and cannot run without the .Net framework installed. Apart from MSIL there is a substantial amount of metadata included. You can use Ildasm or Reflector to look into the .Net executables.

Technically, they not interpreted, but JIT (Just-In-Time) compiled to machine code. There is a way to compile them to native code, NGen.exe utility. Sometimes, JIT code can be faster than NGen since it can do runtime analysis.

Problem

I've noticed in .net its extremely easy to reverse engineer exe's. Is this because .net executables are merely instruction code for the .net engine, and because of this .net is an interpreted language? And never executed natively? I must admit, I've never had any performance issues with .net code and so this is why I'm in doubt. Could someone please explain this to me? Thanks for the answers so far, does anyone know why Microsoft decided to create this method of requiring a framework, if I remember correctly in the days of vb6 code was compiled to native. Is there a very good reason for .net code having to run through an interpreter now>

Original source

Related problems