dnSpy/README.md

104 lines
4.2 KiB
Markdown
Raw Permalink Normal View History

2020-10-17 02:21:09 +08:00
# dnSpy - [Latest release](https://github.com/dnSpy/dnSpy/releases)
2016-04-25 13:06:45 +08:00
2020-01-05 18:51:42 +08:00
dnSpy is a debugger and .NET assembly editor. You can use it to edit and debug assemblies even if you don't have any source code available. Main features:
2019-12-14 00:51:14 +08:00
- Debug .NET and Unity assemblies
- Edit .NET and Unity assemblies
2020-01-05 18:51:42 +08:00
- Light and dark themes
See below for more features
2016-04-25 13:06:45 +08:00
2019-12-15 08:39:03 +08:00
![debug-animated](images/debug-animated.gif)
![edit-code-animated](images/edit-code-animated.gif)
2020-07-08 18:12:38 +08:00
## Binaries
2020-10-17 02:21:09 +08:00
https://github.com/dnSpy/dnSpy/releases
2020-07-08 18:12:38 +08:00
2019-12-17 00:35:37 +08:00
## Building
2017-11-09 02:25:34 +08:00
2019-12-14 00:51:14 +08:00
```PS
2020-10-17 02:21:09 +08:00
git clone --recursive https://github.com/dnSpy/dnSpy.git
2019-12-14 00:51:14 +08:00
cd dnSpy
# or dotnet build
2020-01-19 23:26:06 +08:00
./build.ps1 -NoMsbuild
2019-12-14 00:51:14 +08:00
```
2020-01-05 18:51:42 +08:00
2020-10-17 02:21:09 +08:00
To debug Unity games, you need this repo too: https://github.com/dnSpy/dnSpy-Unity-mono (or get the binaries from https://github.com/dnSpy/dnSpy/releases/unity)
2020-07-08 18:12:38 +08:00
2020-01-05 18:51:42 +08:00
# Debugger
- Debug .NET Framework, .NET and Unity game assemblies, no source code required
2020-01-05 18:51:42 +08:00
- Set breakpoints and step into any assembly
- Locals, watch, autos windows
- Variables windows support 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
# Assembly Editor
- All metadata can be edited
- Edit methods and classes in C# or Visual Basic with IntelliSense, no source code required
- Add new methods, classes or members in C# or Visual Basic
- IL editor for low-level IL method body editing
- Low-level metadata tables can be edited. This uses the hex editor internally.
# Hex Editor
- Click on an address in the decompiled code to go to its IL code in the hex editor
- The reverse of the above, press F12 in an IL body in the hex editor to go to the decompiled code or other high-level representation of the bits. It's great to find out which statement a patch modified.
- Highlights .NET metadata structures and PE structures
- Tooltips show more info about the selected .NET metadata / PE field
- Go to position, file, RVA
- Go to .NET metadata token, method body, #Blob / #Strings / #US heap offset or #GUID heap index
- Follow references (Ctrl+F12)
# Other
- 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 the next reference
- Go to the entry point and module initializer commands
- Go to metadata token or metadata row commands
- Code tooltips (C# and Visual Basic)
- Export to project
# List of other open source libraries used by dnSpy
- [ILSpy decompiler engine](https://github.com/icsharpcode/ILSpy) (C# and Visual Basic decompilers)
- [Roslyn](https://github.com/dotnet/roslyn) (C# and Visual Basic compilers)
- [dnlib](https://github.com/0xd4d/dnlib) (.NET metadata reader/writer which can also read obfuscated assemblies)
- [VS MEF](https://github.com/microsoft/vs-mef) (Faster MEF equals faster startup)
- [ClrMD](https://github.com/microsoft/clrmd) (Access to lower level debugging info not provided by the CorDebug API)
- [Iced](https://github.com/0xd4d/iced) (x86/x64 disassembler)
# Translating dnSpy
[Click here](https://crowdin.com/project/dnspy) if you want to help with translating dnSpy to your native language.
# Wiki
2020-10-17 02:21:09 +08:00
See the [Wiki](https://github.com/dnSpy/dnSpy/wiki) for build instructions and other documentation.
2020-01-05 18:51:42 +08:00
# License
dnSpy is licensed under [GPLv3](dnSpy/dnSpy/LicenseInfo/GPLv3.txt).
# [Credits](dnSpy/dnSpy/LicenseInfo/CREDITS.txt)