Each new version of the decompiler traditionally brings a lot of changes. But this release is special! It includes several improvements so significant that in fact we can talk about this version as a new product. So, first things first.
Start of the new era of decompiling .NET applications into C# code
Many of our clients love VB Decompiler for decompiling not only Visual Basic 5.0 and 6.0 programs, but also disassembling .NET applications into MS IL code. For almost 20 years, VB Decompiler has been decompiling both code: compiled into P-Code pseudocode with over 1000 instructions and over 500 wrapper APIs, and native assembler code (Native Code) with over 600 wrapper APIs and many compiler optimizations. In addition, since 2006, the development of a .NET disassembler has been underway, which previously supported both Managed code and machine Unmanaged code, both for 32 and 64 bit CIL compatible applications. But the main feature has always been that the decompiler did not use the .NET Framework at all. No Reflection classes! All decompiler code was and is being written from scratch and does not use any .NET libraries. Today it's the only .NET decompiler in the world that works on any system, even if it does not contain any .NET libraries. This has a lot of advantages: there is no need to search and install different .NET versions, trouble-free operation in Linux under Wine and in Mac OS through Parallels. Resistance to glitches when decompiling code processed by one or another obfuscator. Moreover, versions of the decompiler prior to 8.5 were even able to disassemble .NET code under Windows 95! But that's more of a story.
And now, after 17 years and a lot of preparatory work, I am pleased to present the first release of the IL code decompiler to C# code! The decompiler supports any 32 and 64 bit .NET applications. It doesn't really matter if they were written in Visual C# .NET or Visual Basic .NET or any other CIL compliant language.
Already supported are Try ... Catch blocks, Switch Case statements, declaring arrays on the stack, and most of the IL bytecode opcodes.
Since this is the first version, there are limitations. While most, but not all, IL commands are supported. No parsing "if .. then" into loops. No support for array initialization via wrappers.
However, the key features of the decompiler are already working. For each line of code, a virtual address in memory is indicated, the code for which can be immediately viewed in the built-in HEX editor and you can simply make changes at the binary level. It is possible to copy the decompiled code into the disassembled code for in-depth analysis of the file. Analytics features are supported for licenses with this support. In general, everything works the same as in the case of the Visual Basic 6.0 decompiler. And all this is inside one single product! I'm sure you will certainly appreciate it.
Support for Mac M1
There is a common misconception that Visual Basic applications only need to be decompiled on Windows, as they are themselves Windows applications. However, today a lot of analysts at antivirus companies use Mac computers for code analysis. And for the author of the product, this is a reason to make the decompiler even better. Therefore, it was decided to purchase the appropriate hardware and adapt VB Decompiler as much as possible to work under Parallels in Mac M1, taking into account incompatibilities in emulating standard Windows APIs. A lot of work has been done to find various incompatibilities and make improvements. And now, VB Decompiler works great on Mac M1 too!
Every year, more and more people are starting to use the dark theme in their work in various applications. Displays are getting better, and vision, alas, worse. At the same time, the dark theme allows you to work with the product with less eye strain in the dark.
VB Decompiler uses many self-written visual components for a better user experience. And adding a dark theme was another quest. Also, the external theme support code was completely redesigned (which, by the way, has been available since the earliest versions of the product). And now, instead of several color and font settings, there is a flexible massive block of settings that allows you to significantly change the syntax highlighting and the appearance of the product.
One of the significant updates to themes is the ability for each font setting to specify more than one font, but the font family and the decompiler will try to use one or another font in turn. This is especially useful when Windows has the desired font, but Mac or Linux may need a replacement. So, such a replacement will be made from the list specified in the subject automatically!
If suddenly the standard themes do not suit you, then you can always go to the folder with VB Decompiler, subfolder "colors", open the ini configuration file of the desired theme and change it for yourself. Description of all settings, as usual, is in the product documentation.
Also, one of the features is the ability to change the theme on the fly, without restarting the product, even in the case of manual editing of the theme files while the decompiler is running.
And another nice bonus is that the dark theme is 95% compatible with Steam Deck consoles. Yes, you can use VB Decompiler on them too!
Obfuscation for Visual Basic 5.0/6.0 applications
Almost from the first versions, the decompiler also supports obfuscation to protect Visual Basic applications from being analyzed by the decompiler. For a long time, this code has not changed. But in version 12.1, obfuscation has been significantly redesigned to be compatible with a large number of rare data variations. Compatibility fixes have also been made.
Highlighting words under the cursor
One of the recently added and significantly improved features of the decompiler in the new version is the highlighting of selected words in the decompiled code. It works extremely simply. You click on a word in the code and all similar words are also highlighted in color. The color, by the way, can be changed in the theme settings. In addition, if you click on the address on the left side of the code and go to the Disassembler window - VB Decompiler will immediately go to the line with this address!
Improve compatibility with Chinese locale
It is not a secret for the author of VB Decompiler for a long time that purely Unicode versions of Windows have some differences in the work of Ansi versions of API functions. Most of these fixes have long since been made. But suddenly it turned out that in the Chinese versions of Windows 10 and 11 with the latest updates, new serious glitches appeared in the work of some Ansi API functions. The most unpleasant moment concerns the fact that some service characters disappear from the strings, making the string smaller by the corresponding number of bytes. Unfortunately, the only way to eliminate these problems once and for all was to completely abandon the use of AnsiString where service characters could be present in the strings, which required a significant part of the code to be reworked.
As you can see, the decompiler has changed a lot. And, as always, in VB Decompiler, a new version is never a couple of fixes. This is always a serious product improvements. And I hope each of you sees and appreciates it. As always, the new version is already available for download if your license is active. If you suddenly forgot to renew your license - today there is a very good reason for this! Thanks for using VB Decompiler, it's being developed for you.
* Visual Basic, Visual Studio are registered trademarks of Microsoft Corporation.