Practical Disassembling
Session description
Did you use to take things apart just to figure out what they were made up of and how they worked? In this talk we will learn some ways to disassemble .Net assemblies in order to see what they are under the hood and how they work.
First we will take a look at what disassembling is and why you should care as a developer (ie. usefulness of learning, debugging, fine tuning and concerns about intellectual property), then we will move on to some practical examples of how you can use Reflector (and its add-ins) and DILE (Dotnet IL Editor) to help you better understand how .Net works and what it is made of. By the end of the talk you will be familiar with a few tools that you can use to satisfy that natural curiosity of tearing things apart to learn more about them.
Point B
To provide an understanding of what disassembling and decompiling are in the .Net world, how you as a developer can use disassembers/decompilers to learn more about how .Net works, fine tune your code and better understand what this means if you “ship” your code.
WIFFY (what’s in it for you?)
Why should you, as a developer, care? You can learn about your compiler of choice from looking at the IL after it has been compiled. You can translate your source to another .Net language. You can view all pieces of an assembly. You can fine tune your IL code. Most of all you will get a better understanding of how your code looks (whether you are looking at it or someone else is), what it contains after compilation, and what some of your options are to protect your code if you need to.
Demos
Introduction to the tools
ILDasm
Reflector
DILE
Learn your way around .Net Assemblies
Simple Console Exe
Multi-tier Win Forms Exe
Temporary ASP.Net .dlls
How to use as a debugging aid
VS.Net example
Refector addins
Step through code with DILE
Win forms application
*ASP.Net application temporary files
How to fine tune an assembly
Simple round trip
More complicated round trip
Awareness (scare the audience members who ship code demos)
Extract resources
Remove and resign a strong named assembly
Obfuscation
Dotfuscator example
Decompile after obfuscated