I was looking for tools for some .Net work, when I came across two fantastic tools – .Net Reflector and Hawkeye. Both of them together can help reverse engineer a lot of .Net code.
I think one of the advantages of a virtual machine and intermediate level code, CLR in this case, is that its specifications can be used to explore the JVM capabilities at runtime irrespective of the programming language used. Since the .Net framework works at an object level, these objects can be accessed and even modified. Though .Net framework is not my first choice, I like the fact that the C# compiler is easily available. I have taken a liking to some of the tools developed using it, like SharpDevelop (MonoDevelop for Mono) and Paint.Net (ported to Mono). The .Net Reflector and Hawkeye get added to the list.
In spite of the ports to Mono, it makes sense to use these tools on Windows itself, on Linux there are many more options. Mono is great because now it gives a chance to Windows developers to make their application cross platform. But a disadvantage is that now there are many more competitors for the application. For example, Paint.Net is the choice on Windows, but I still choose to use Krita or Gimp or Gwenview on Kubuntu.
