Worth Reading: Reverse Engineering .NET bytecode
.NET framework programs are, like Java programs, translated into a common intermediate language – bytecode – which is used by the common language runtime. It's the .NET runtime which is then responsible for translating that bytecode into machine code for execution. A small series of articles is now available which presents the tools and techniques necessary for the analysis of that .NET byte code.
In the first part of Demystifying Dot NET Reverse Engineering, titled Big Introduction, the author, Soufiane Tahiri, analyses "Crack Me", a simple .NET app, and extracts the password it contains. In the second part, Introducing Byte Patching, he goes a step further and shows how to manipulate the byte code with a simple intervention that makes it accept any password.