dnSpyEx
dnSpyEx — неофициальное продолжение проекта dnSpy, который представляет собой отладчик и редактор сборок .NET. Вы можете использовать его для редактирования и отладки сборок, даже если у вас нет исходного кода. Основные возможности:
- Отладка сборок .NET и Unity
- Редактирование сборок .NET и Unity
- Светлая и тёмная темы
Дополнительные возможности см. ниже


Бинарные файлы
Последний стабильный выпуск: https://github.com/dnSpyEx/dnSpy/releases
Если вам нравится жить на грани, вы можете использовать последние «бета»-сборки:

Сборка
git clone --recursive https://github.com/dnSpyEx/dnSpy.git
cd dnSpy
# or dotnet build
./build.ps1 -NoMsbuild
Для отладки игр Unity вам также понадобится этот репозиторий: https://github.com/dnSpyEx/dnSpy-Unity-mono
Отладчик
- Отладка сборок .NET Framework, .NET и игр Unity без исходного кода
- Установка точек останова и пошаговый вход в любую сборку
- Окна локальных переменных, контрольных значений и автоматических значений
- Окна переменных поддерживают сохранение переменных (например, расшифрованных байтовых массивов) на диск или просмотр их в шестнадцатеричном редакторе (окне памяти)
- Идентификаторы объектов
- Можно отлаживать несколько процессов одновременно
- Остановка при загрузке модуля
- Точки трассировки и условные точки останова
- Экспорт/импорт точек останова и точек трассировки
- Необязательные фильтры пошаговой отладки «Только мой код» (JMC) для системных библиотек
- Окна стека вызовов, потоков, модулей и процессов
- Остановка при выброшенных исключениях (1-й шанс)
- Окна переменных поддерживают вычисление выражений C# / Visual Basic
- Можно отлаживать динамические модули (но не динамические методы из-за ограничений CLR)
- Окно вывода регистрирует различные события отладки и по умолчанию показывает метки времени :)
- Можно отлаживать сборки, которые расшифровывают себя во время выполнения; dnSpy будет использовать образ в памяти. Вы также можете заставить dnSpy всегда использовать образы в памяти вместо файлов на диске.
- Обходы распространённых методов обнаружения отладчика
- Публичный API: вы можете написать расширение или использовать окно C# Interactive для управления отладчиком
Редактор сборок
- Можно редактировать все метаданные
- Редактирование методов и классов на C# или Visual Basic с поддержкой IntelliSense без исходного кода
- Добавление новых методов, классов или членов на C# или Visual Basic
- Редактор IL для низкоуровневого редактирования тел IL-методов
- Можно редактировать низкоуровневые таблицы метаданных. Для этого внутренне используется шестнадцатеричный редактор.
Шестнадцатеричный редактор
- Нажмите на адрес в декомпилированном коде, чтобы перейти к его IL-коду в шестнадцатеричном редакторе
- Обратное действие: нажмите F12 в теле IL в шестнадцатеричном редакторе, чтобы перейти к декомпилированному коду или другому высокоуровневому представлению битов. Это отличный способ выяснить, какой оператор изменил патч.
- Подсвечивает структуры метаданных .NET и PE-структуры
- Всплывающие подсказки показывают дополнительную информацию о выбранном поле метаданных .NET / PE
- Переход к позиции, файлу, RVA
- Переход к токену метаданных .NET, телу метода, смещению в куче #Blob / #Strings / #US или индексу кучи #GUID
- Переход по ссылкам (Ctrl+F12)
Прочее
- Декомпилятор и дизассемблер BAML
- Синяя, светлая и тёмная темы (а также тёмная тема с высокой контрастностью)
- Закладки
- Окно C# Interactive можно использовать для написания скриптов для dnSpy
- Поиск классов, методов, строк и т. д. в сборках
- Анализ использования классов и методов, поиск вызывающих методов и т. д.
- Несколько вкладок и групп вкладок
- Ссылки подсвечиваются; используйте Tab / Shift+Tab для перехода к следующей ссылке
- Команды перехода к точке входа и инициализатору модуля
- Команды перехода к токену метаданных или строке метаданных
- Всплывающие подсказки для кода (C# и Visual Basic)
- Экспорт в проект
Список других библиотек с открытым исходным кодом, используемых dnSpy
- Движок декомпилятора ILSpy (декомпиляторы C# и Visual Basic)
- Roslyn (компиляторы C# и Visual Basic)
- dnlib (средство чтения/записи метаданных .NET, которое также может читать обфусцированные сборки)
- VS MEF (более быстрый MEF означает более быстрый запуск)
- ClrMD (доступ к низкоуровневой отладочной информации, не предоставляемой API CorDebug)
- Iced (дизассемблер x86/x64)
- Newtonsoft.Json (сериализатор и десериализатор JSON)
- NuGet.Configuration (средство чтения файлов конфигурации NuGet)
Перевод dnSpy
Нажмите здесь, если вы хотите помочь с переводом dnSpy на ваш родной язык.
Вики
См. Вики для получения инструкций по сборке и другой документации.
Лицензия
dnSpy лицензирован в соответствии с GPLv3.