Visual Studio 2015, Roslyn Compilers and Obfuscation

Long long time ago Microsoft produced csc.exe and vbc.exe compilers for C# and VB.NET respectively. Those classic compilers come together with every version of .NET Framework and are usually located at a folder similar to C:\Windows\Microsoft.NET\Framework\v4.0.30319.

The classic C# and VB.NET compilers were written in native C/C++ code to solve the egg and chicken problem when .NET was at the age of infanity.

Visual Studio .NET (aka 2002) Splash Screen

All Visual Studio versions starting from 2002 used those proven compilers.

New Compilers

The recent release candidate of Visual Studio 2015 brings a big change: it comes with new C# and VB.NET "Roslyn" compilers together with "go live" license implying that they can be used for production purposes.

The .NET Compiler Platform ("Roslyn") provides open-source C# and Visual Basic compilers with rich code analysis APIs. It enables building code analysis tools with the same APIs that are used by Visual Studio. Roslyn on GitHub

Roslyn compilers were written from scratch and it was a really big effort to level them up to the production quality. It took more than six years along that way.

The Strongest Release Since 2005

Visual Studio 2015 with new compilers and features caught a great attention from enthusiasts. No wonder, the amount of new impressive stuff in Visual Studio 2015 directly resembles the pompous release of Visual Studio 2005 with .NET Framework 2.0 and state-of-the-art generics support in .NET languages.

Visual Studio 2005 Beta Flyer

Fact #1: prior to 2005, everybody lived in dark age of .NET, and used scary and slow things like ArrayLists, Hashtables with imminent boxing/unboxing implications for value types. How slow is boxing operation? Approximately 250x slower than the ordinal instruction, so you can imagine the performance impact.

Fact #2: it took three (!) years for .NET obfuscators to catch up with generics.

So, the new Roslyn compilers for .NET are great but you probably know where I am heading.

Truth Is in the Details

New Roslyn compilers are different. They produce different IL instructions at the output. They generate nicely optimized closures for lambda expressions, but they do some omissions along the way. The current version of Roslyn compilers have subtle issues here and there. Sure, they will be rectified but this takes time.

To sum up the compiler transition thing: here be dragons.

It made a good part of time to cover all the nuances of new Roslyn compilers in Eazfuscator.NET. Obfuscation works on .NET metadata and it analyzes IL instructions too, so it takes a great care to do the things right.

As a result, new Eazfuscator.NET 4.9 brings full support for Roslyn compilers.

Get Eazfuscator.NET and start enjoying new Visual Studio 2015 right now. And more importantly, there is no need to wait for three years like you would do in 2005 for .NET obfuscators to catch up with generics!

P.S. For those of you who question the need of a newer Eazfuscator.NET version for Visual Studio 2015 here is the important reminder. You absolutely need Eazfuscator.NET 4.9 or higher if you plan to use Visual Studio 2015 RC or higher for production purposes.

comments powered by Disqus