VB Decompiler v12.4 has been released (July 11, 2024)
What's new in this version:
- Powerful conversion feature for goto conditions using
if { } blocks of code in .NET
- Combine multiple goto commands with the same address into a single
if { } block with multiple conditions in .NET
- VB Decompiler now supports finding procedures and functions by name
throughout an entire project. This is especially useful when exploring large
projects with many procedures, knowing the interested procedure's name but
losing time trying to find it within the tree. You can also search for
procedures by a part of their name. To use this feature, press "Ctrl" + "T",
or go to "Tools" -> "Find function". After searching, VB Decompiler will
display all found functions in a list and allow you to jump to any function.
Saving reports, copying each entry, and searching within the list are also
supported. This feature available for Visual Basic 5.0/6.0 files and
for .NET files as well (C# .NET, VB .NET, etc).
- Decompilation of break commands inside switch case blocks and heuristic
analysis with closing switch case blocks in .NET
- Find references to any procedure or function in all forms and modules.
After searching, VB Decompiler will display a list of found functions
and allow you to jump to any function. Saving reports, copying each
entry, and searching within the list are also supported. This feature
was initially available for Visual Basic 5.0/6.0 but is now accessible
for .NET files as well (C# .NET, VB .NET, etc).
- Support decompilation to C# for "isinst" MS IL opcode in .NET
- Documentation has been fully revamped and expanded in
English, Japanese, Russian, and German languages.
- Partically fixed documentation in Spanish, Chinese and Turkish
- New documentation in Italian language
- Japanese UI translation is now support all dialogs and menus
- Documentation has partially updated in Spanish and Chinese languages.
- Updated documentation in seven languages is now available in a more
readable PDF format.
- Support for obfuscating "After" and "Before" events for form objects
- Correct decompiling of try...catch blocks if the error variable type
is obfuscated in .NET
- More user-friendly decompilation for Operators.CompareString calls with
frequently used parameters for string comparison in .NET
- Filter last goto in try...catch block in .NET
- Save all in one module now uses UTF8 encoding for C# files in .NET
- Menu "Tools" -> "Search string" is now renamed to "Find string"
- BugFix: Resolved translation issues at the String References
dialog window
- BugFix: Corrected splash screen rendering in light theme mode
- BugFix: Fixed Drag and Drop functionality after changing certain settings
- BugFix: Eliminated error when decompiling .NET procedures containing
references to first-line code (.NET)
- BugFix: Removed duplicate addresses for bge.un.s and bne.un.s commands (.NET)
- BugFix: Corrected erroneous addition of commas to switch case jump lists (.NET)
- Bug Fix: Added brackets to calculations within conditional statements.
For example, "if (test / 3 >= 10)" now appears as "if ((test / 3) >= 10)". (.NET)
VB Decompiler v12.3 has been released (January 1, 2024)
What's new in this version:
- New powerful feature to rename variables in decompiled code. You can now
right click on any variable (var_XX in VB5/6 code and var_XX, num_XX,
flt_XX, str_XX in a .NET assembly) and choose "Rename variable" from
the popup menu. All instances where this variable is used will be
automatically updated. You can undo this renaming by right-clicking
on the variable again and selecting "Undo renaming". Each new name
will be checked before renaming to prevent conflicts with keywords
or other variables.
- Increased decompilation speed (Native Code)
- The "Save Procedures List" now saves a file in C# prototype
style for .NET compiled programs (.NET)
.
- "Save all in one module" now save code to a .cs file in a
C# style for the .NET compiled programs (.NET)
- Improvements in heuristic analyzer of procedure types
- Filtering added for compiler's internal multithreading call __vbaAptOffset
- Support added for AddItem and RemoveItem methods for standard OLE objects
- Support added for StdFont object with GUID {BEF6E003-A874-101A-8BBA00AA00300CAB}
- Support added for Printer "set" properties of the object with
GUID {33AD4F31-6699-11CF-B70C00AA0060D393}
- Support added for StdPicture object with GUID {7BF80981-BF32-101A-8BBB00AA00300CAB}
- Support added for Move method for standard OLE objects
and using this object as "set"/"get" property of standard OLE controls
- Support added for __vbaVarZero API from MSVBVM60.DLL
- Support added for __vbaVarIndexLoadRef API from MSVBVMXX.DLL
- Files not supported by decompiler will no longer be added
to the History recent files list
- Added new strings to localization files
- BugFix: Drag and drop files to VB Decompiler window in Dark Theme
is now working correctly
- BugFix: Re-editing string reference after changing it to another string
with smaller size no longer causes issues
- BugFix: Crash fixed when Shift key is pressed before decompilation,
if Fast decompilation is disabled in Options
- BugFix: After double clicking on a function call at the decompiled code,
VB Decompiler now correctly jumps to that function without selecting text
from start of code to position of click
- BugFix: Correctly pop values from stack after processing SafeArray (Native Code)
- BugFix: Declare non-recovered variables as zero with "Dim var_XX As 0" (Native Code)
- BugFix: Clear the stack correctly after calling __vbaVarIndexLoad, __vbaVarIndexLoadRef
and __vbaVarIndexLoadRefLock APIs from MSVBVMXX.DLL
- BugFix: Processing some jumps with conditional in a global variable (Native Code)
- Parsing long 4 bytes MethodPtr table is now supported (.NET)
VB Decompiler v12.2 has been released (June 26, 2023)
What's new in this version:
- Improved support for obfuscated files (.NET)
- Declaring external calls as "public extern" (.NET)
- Adding argument names to method declaration (.NET)
- Support for Generic Instantiation via MethodSpec table (.NET)
- Support decompilation to C# for "ldelem" and "stelem" MS IL opcodes (.NET)
- Persian translation of the documentation and GUI by Ehsan Salehi
- BugFix: Incorrect analysis of temp variable for some exception Handlers (.NET)
- BugFix: Calculating size of some large "~" structures (.NET)
VB Decompiler v12.1 has been released (April 15, 2023)
What's new in this version:
- A new era of .NET decompilation has begun in VB Decompiler! Version 12.1 introduces
the first iteration of C# decompiling from IL bytecodes. Since its
inception in 2006, VB Decompiler has continuously improved compatibility
over time. This isn't standard .NET decompiling using Reflection classes;
all .NET decompilation within VB Decompiler is written from scratch and
doesn't rely on the .NET framework. Additionally, all previous versions
of VB Decompiler up to v8.5 can be run on Windows 95 without any issues.
All prior years saw us only decompile .NET structures and disassemble MS IL.
Starting in 2023 with version 12.1, VB Decompiler supports the decompilation
of .NET code! This code can be written in Visual C# .NET, Visual Basic .NET
or any other CIL-compatible language.
It could be x86 code or x64 code, managed or unmanaged - VB Decompiler handles it all!
And just like in the early versions, VB Decompiler doesn't use the .NET framework
within its decompiling process. You can decompile .NET code on a PC without having
the .NET framework installed!
This is the first version of C# decompiling and some features aren't yet supported.
Already supported are Try...Catch exceptions, Case statements, initializing arrays
on the stack, and numerous MS IL opcodes. Loop recognition isn't currently
supported either, appearing as "if...then" blocks instead. Support for C# wrappers
in Visual C .NET for fast array initialization is also not yet available
but will be added in future updates.
- Significant improvements have been made to Visual Basic obfuscation with
a lot of code refactored for better performance
- Compatibility fixes with Chinese Windows locale (different processing
of non-unicode characters)
- Decompile "type" of the handler for the Small SEH frames added (.NET)
- Click to select any address in the Decompiler tab, then open the Disassembler tab;
VB Decompiler will navigate to and highlight that address.
- Click on any address within a comment "Referenced from" in a code to
highlight that address
- Support for the "Add HEX dump" option has been added to MS IL .NET disassembler (.NET)
- Additions to the Chinese Simplified UI translation by fairycn
- BugFix: decoding branches back (.NET)
- BugFix: Windows XP compatibility fixes
VB Decompiler v12 has been released (February 8, 2023)
What's new in this version:
- Compatibility with Mac OS on M1 processors via Parallels
- Faster decompiler loading speed across all licenses
- New Dark Theme and support for custom themes based on dark and light colors.
Many controls and application code have been refactored, rewritten, and
optimized to support this new feature, along with the addition of
numerous color scheme parameters. Fonts (family and size) can now be
changed separately for Solution Explorer, Decompiler, and HEX Editor.
Additionally, users can customize colors for all parts of Highlighting
Code and all parts of HEX Editor. The Color Scheme topic in
English documentation has been updated with information on
how to create your own color theme.
- Users can now select multiple Font Families for each part of the UI control
in a color schemes configuration file, supporting Windows,
Linux, and Mac systems where installed fonts may differ.
- Dark Theme support is provided for Parallels in Mac OS and Wine on Linux systems.
Although there's an issue with menu refreshes in Steam Deck console when using
Dark Theme (tested on Wine, not Proton), other features work fine.
- Approximately 50 icons have been redrawn to support
smooth transparent rendering in the Dark Theme
- A new .NET strings mangler and demangler has been added to support
special characters in code and editing in String References (.NET)
- Duplicate entries will no longer be shown in "String References" if they are
used at the same method, but will still be displayed when methods differ
- New parsing algorithms for arguments of the __vbaVarLateMemSt and
__vbaLateIdSt msvbvmXX.dll APIs have been implemented to support
class properties with reverse order Dispatch IDs
- The Tracer for P-Code compiled programs has seen significant improvements
including showing variables and a list of previously
decompiled code (Tracing features)
- Translations are now supported in Native Code and P-Code Tracers
if translations exist for your language within a "lang"
subfolder of the VB Decompiler installation folder (Tracing features)
- The Native Code Tracer window size has been increased and supports
using only keyboard shortcuts (Tracing features)
- Courier New font is replaced with Liberation Mono when
decompiling code under Linux via Wine to improve readability
- Less time and memory are used to find APIs
- BugFix: Opening binary files in VB Decompiler via command line
- BugFix: Showing the correct virtual address of the API
wrapper code (API list in Solution Explorer tree)
- BugFix: Resizing Find Method References (Find Next)
and String References windows
- BugFix: Refresh strings list in internal .net structures after
editing string in the String References dialog form (.NET)
- BugFix: Save file after editing in a HEX Editor
(Error about cannot save read-only file)
- BugFix: Show HEX dump and assembler command for calls
of API wrapper in a Disassembler tab (Native Code)
VB Decompiler v11.9 has been released (August 29, 2022)
What's new in this version:
- New parser for If ... End If statements
- Right click on any loc_XX address within the code and select
"Copy to disassembler". This not only merges decompiled and assembly code,
but also jumps the same line of code as seen in the Decompiler tab.
It helps with analyzing large procedures.
- New parser for TypeLib information from external OCX/DLLs,
used in a decompiled file
- Support extended prototype values in VTable (VB5/6)
- Backward compatibility for Windows XP (experimental)
- Parse prototypes of functions/procedures using RTTI
- Support for dynamic size of Events structure
- Filter "_adj_fdivr_m32" API (Native Code)
- Parse "movzx" assembly command (Native Code)
- Ignore "cwd" assembly command (Native Code)
- Support external objects calling by early binding (P-Code)
- Support calling by VTable offset public methods and
get/set public variables in internal classes (Native Code)
- New parser for assembler "test" command (Native Code)
- Parsing array operand in "imul" command (Native Code)
- Parsing array first operand in "cmp" command (Native Code)
- Decompile calls to basic methods (with VTable offset 1 to 3Ch)
of OLE objects: AddRef, Release, PropertyBag, etc (P-Code)
- Increased row height for properties list in Designer
- BugFix: Do not show Form or Class in a Solution Explorer if this
class is placed before Module without public methods
- BugFix: Ignore analyzing prototype for public "Sub" and "Functions" to
display the correct color of icons in Solution Explorer
- BugFix: Show "(" and pointer to variable as a comment
- BugFix: Parsing variable of "Select Case" statement where
esi register is not used, but some optimizations were used
during compilation (Native Code)
- BugFix: Type of method ("Sub" or "Function") can be cleared
in a prototype declaration during analyzing code with unknown prototype