- Joined
- Jan 8, 2019
- Messages
- 56,607
- Solutions
- 2
- Reputation
- 32
- Reaction score
- 100,453
- Points
- 2,313
- Credits
- 32,590
6 Years of Service
76%

Introduction
dnSpy is a tool to reverse engineer .NET assemblies, including .NET debugger, a decompiler and an assembly editor. This tool can be easily extended by writing custom and your own plugin. It uses dnlib to read and write assemblies so it can handle obfuscated assemblies without crashing.
dnSpy: .NET debugger, decompiler & assembly editor
This amazing tool is open source, forever free and has very modern and intuitive design, kinda similar to Visual Studio. It uses many open source libraries:
ILSpy decompiler engine: C# and Visual Basic decompilers
Roslyn: C# and Visual Basic compilers
dnlib: .NET metadata reader/writer which can also read obfuscated assemblies
VS MEF: Faster MEF equals faster startup
ClrMD: Access to lower level debugging info not provided by the CorDebug API
Features
Debug .NET Framework, .NET Core and Unity game assemblies, no source code required
Edit assemblies in C# or Visual Basic or IL, and edit all metadata
High DPI support (per-monitor DPI aware)
Extensible, write your own extension
BAML decompiler
Blue, light and dark themes (and a dark high contrast theme)
Bookmarks
C# Interactive window can be used to script dnSpy
Search assemblies for classes, methods, strings etc
Analyze class and method usage, find callers etc
Multiple tabs and tab groups
References are highlighted, use Tab / Shift+Tab to move to next reference
Go to entry point and module initializer commands
Go to metadata token or metadata row commands
Code tooltips (C# and Visual Basic)
Export to project
Debugger
Debug .NET Framework, .NET Core and Unity game assemblies, no source code required
Set breakpoints and step into any assembly
Locals, watch, autos windows
Variables windows supports saving variables (eg. decrypted byte arrays) to disk or view them in the hex editor (memory window)
Object IDs
Multiple processes can be debugged at the same time
Break on module load
Tracepoints and conditional breakpoints
Export/import breakpoints and tracepoints
Call stack, threads, modules, processes windows
Break on thrown exceptions (1st chance)
Variables windows support evaluating C# / Visual Basic expressions
Dynamic modules can be debugged (but not dynamic methods due to CLR limitations)
Output window logs various debugging events, and it shows timestamps by default

Assemblies that decrypt themselves at runtime can be debugged, dnSpy will use the in-memory image. You can also force dnSpy to always use in-memory images instead of disk files.
Public API, you can write an extension or use the C# Interactive window to control the debugger
To see this hidden content, you must like this content.