Skip to content

v6.4.0

Compare
Choose a tag to compare
@ElektroKill ElektroKill released this 13 Jun 18:42
· 206 commits to master since this release
ac0564b

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
image

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

New Contributors

Full Changelog: v6.3.0...v6.4.0

Thanks to everyone for reporting issues, opening pull requests, and supporting the project through other means! This release would not have been possible otherwise :P A special thanks goes out to all my current and past GitHub Sponsors for supporting this project and me working on it!