dnSpy v6.4.0
2023-06-13
Changelog
Quote:
CRITICAL SECURITY WARNING
This release of dnSpyEx addresses the many newfound vulnerabilities in .NET 6. Updating is highly recommended!
See https://github.com/dotnet/announcements/issues issues 250 and 252-261
New features:
• All distributions of dnSpyEx now support resolving Windows shortcut files (*.lnk) when they are dragged onto the assembly explorer.
• Extended the export to project feature by adding support for unpacking multi-element resources back to .resx source files
• Introduce two additional options to the Save Module dialog. (AddMvidSection and ForceBigColumns)
• Added a new menu command to copy the full name of any metadata member.
• Add support for horizontal scrolling with the shift key in the text and hex editors.
• Add support for multiline copy and paste to the text editor.
• Added support for .url shortcut files and modified the code to recursively resolve shortcuts until a target file is reached.
• ILSpy Decompiler:
○ Display custom attributes defined on interface implementations in the IL disassembly
○ Add IL with C# decompiler language which annotates the IL disassembly with comments showing the higher level C# statements above the IL code responsible for them.
○ Show field initial value for simple primitive types in a comment located above the field declaration.
○ Added a new decompiler option to disable the insertion of unnecessary parenthesis.
• Reworked BAML disassembler:
○ Heavily improved syntax highlighting and other editor features like indent guides and brace pair highlighting.
○ Add local jump to reference for BAML attribute, type, etc. declaration records.
○ Add support for dnSpy's number tooltips in the disassembler.
○ Introduce tooltips for type, assembly, property, and resource references.
○ Improved performance and memory efficiency.
Improvements and bug fixes:
• Fixed regular non-publish .NET 6 debug and release dnSpy builds, they no longer crash on startup and now also use the correct x86 icon when applicable.
• Fixed a commonly occurring NullReferenceException when editing event definitions using the assembly editor component.
• Improved Chinese translation by @Wenveo
• Fixed incorrect handling of __arglist parameter in the Edit in C#/Edit in VB options.
• Fix incorrect display of VarArg and NativeVarArg in the signature editing dialog.
• Properly handle Unmanaged calling convention across the dnSpyEx code base.
• Fixed incorrect escaping behavior when displaying strings found in embedded resources.
• Refresh search results when the scope of the search operation is changed (e.g. a different file is selected and the search mode is set to the selected file)
• Fixed C# and VB tooltips for types with uninstantiated generic parameter signatures.
• Escape Hangul Filler characters and other similar whitespace characters that were previously not escaped across the dnSpyEx UI.
• Use reference assemblies for the compiler in the Edit in C#/Edit in VB options to fix issues with incorrect assembly references being emitted when editing .NET Standard or .NET Core assemblies.
• Added a workaround for a bug in WPF WindowChromeWorker that caused OverflowException to be thrown for invalid hittest window messages.
• Correctly set the available options based on the window state in the Windows Alt + Space menu.
• Improved .NET Standard assembly resolution to prioritize exact version match over the latest available version.
• Fixed a bug that resulted in the ability of the user to infinitely scroll horizontally.
• Fix an issue in the new RESX writer which resulted in incorrectly generated RESX for resources with user serialized types.
• ILSpy Decompiler:
○ Fixed multiple NRE's that occurred when decompiling heavily obfuscated property metadata.
○ Fixed an issue that caused incorrect dynamic types to be introduced for method parameters.
○ Improved type inference for calli instructions as well as stores to readonly auto-properties.
○ Fixed several issues relating to the decompilation of member names containing a . character.
○ Display custom attributes in the same order that they appear in metadata by default.
○ Improved performance and memory efficiency.
• Debugger:
○ Fixed certain expressions in the Watch and Locals window being incorrectly syntax highlighted.
○ Fixed a bug that prevented the Show Raw Locals option from working when the Roslyn EE failed to initialize due to invalid metadata.
○ Fixed a bug that prevented the DebuggerDisplayAttribute evaluator from working as intended.
○ Several improvements to the built-in IL interpreter and function evaluator aimed at improving performance and accuracy.
○ Fixed type name parsing issues which lead to the debugger incorrectly resolving custom attributes, security declarations, and some marshal blobs.
○ Improve the Show in memory command for objects in the locals and watch windows.
○ Improve the display of method names in the Call stack window. __arglist, dynamic, nint, nuint and tuple element names are now properly displayed.
○ Added an anti-anti-debug option to prevent the malicious use of NtRaiseHardError to trigger kernel faults (blue screens of death).
○ Added an anti-anti-debug option to prevent the detection of the debugger using a call to CloseHandle with an invalid handle.
○ Update Roslyn debugger intrinsic handling to match what is expected by Roslyn 4.6.0
○ CorDebug:
■ Improved loading of dynamic modules (fixed issues with thread safety and added code to fetch more metadata from the CorDebug API)
■ Fallback to COM-based metadata reading when the in-memory metadata is corrupted (e.g. anti-dumping protection)
■ Display COM error code when the debugger fails to start.
■ Made the timeout for CoreCLR debugger initialization configurable.
■ Display the HRESULT when attaching the CoreCLR debugger fails.
■ Improve support for debugging of single file bundle files which do not contain the required debugging components by trying to load them from the locally installed .NET installations.
○ Mono:
■ Improved loading of obfuscated modules when debugging
■ Fixed several issues related to the resolution of method definitions on newer debugger protocol versions
■ Fixed an unhandled AggregateException when connecting to a Unity debuggee (by @UlyssesWu).
■ Display the IP and port used to connect to the debuggee in the output window.
■ Improve loading of metadata from in-memory modules.
• BAML decompiler:
○ Fixed resolution of PresentationFramework when it was referenced using its special ID 0xFFFF.
○ Lazily resolve known XAML types, properties, and other members to increase performance.
○ Improve extraction of BAML connection ID information to work without all dependency assemblies and in other edge cases.
○ Fixed an issue that resulted in dnSpy introducing markup extensions in cases where they were not syntactically valid.
○ Properly place markup extension arguments containing spaces in single quotes.
○ Fix issues regarding incorrect or missing escaping from markup extensions.
○ Fixed crashes caused by the UI's WPF markup extension parser when it encountered invalid syntax.
○ Fix a bug that caused XAML paths to lack a Z character at the end.
○ Improved support for markup extensions where their classes inherit from generic classes.
○ Improved support for nested types within XAML markup extensions.
Dependency updates:
• Updated Rosyn compiler to 4.6.0
• Updated VS MEF to 17.6.17
• Updated Newtonsoft.Json to 13.0.3
• Updated Iced to 1.19.0
Full Changelog: https://github.com/dnSpyEx/dnSpy/compare/v6.3.0...v6.4.0
|
Download
Code:
https://github.com/dnSpyEx/dnSpy/releases/latest
- Standalone x86:
Code:
https://github.com/dnSpyEx/dnSpy/releases/download/v6.4.0/dnSpy-net-win32.zip
- Standalone x64:
Code:
https://github.com/dnSpyEx/dnSpy/releases/download/v6.4.0/dnSpy-net-win64.zip
- Standalone with .NET Core x86:
Code:
https://github.com/dnSpyEx/dnSpy/releases/download/v6.4.0/dnSpy-netframework.zip