DnSpy — это открытый бесплатный проект утилиты для обратного проектирования сборок .NET.
DnSpy включает в себя декомпилятор, отладчик и редактор сборки (и т. д.) .Он может быть легко расширен путем написания собственного расширения.
Он использует библиотеку dnlib (github.com/0xd4d/dnlib), которая позволяет читать и редактировать сборки .NET, обеспечивая возможность для чтения без сбоев сложных и запутанных сборок, например, сборки вредоносных программ.
Помимо богатого функционала и удобного интерфейса, DnSpy обладает обладает русской локализацией, по многим параметрам превосходит другие аналоги, например ILSpy.
Перечень некоторых функциональных особенностей представлен ниже:
- Редактор и анализатор сборки;
- Поиск внутри сборок (классов, методов, свойств и т.д.);
- Отладчик;
- Декомпилятор проектов на C #, Visual Basic, IL;
- Подсветка синтаксиса;
- Автоподстановка кода (аналог технологии IntelliSense);
- Экспорт декомпилированных сборок в проект Visual Studio;
- встроенный Hex-редактор;
- возможность редактирования метаданных сборки;
- доступ к объектам в GAC;
- Использование нескольких тем для интерфейса;
- использование нескольких языков интерфейса;
- Высокая расширяемость, путем написания и использования плагинов;
- и многое другое.
DnSpy в режиме редактирования декомпилированной сборки представлен ниже.
dnSpy Game Modding Tutorial
По большому счету, в ряде случаев, его можно использовать как альтернативу интегрированной среды разработки Microsoft Visual Studio.
Ниже представлен скриншот DnSpy в режиме отладки сборки.
Почитать информацию о самом проекте DnSpy и принять участие в разработке по ссылке ниже: https://github.com/0xd4d/dnSpy
Скачать последний актуальный релиз и использовать его в работе можно по следующей ссылке: https://github.com/0xd4d/dnSpy/releases
Вы также можете ознакомиться с другими статьями:
- Нумерация версий программного обеспечения
- Visual Studio C#: создание фрагментов кода IntelliSense (snippets)
- Dictionary с поддержкой сериализации
- Программа «Редактор M3U» (M3Ueditor)
- ILSpy — open source альтернатива .NET Reflector
Источник: it-enginer.ru
dnSpy
Как переводить dll-ки:
Сразу скажу, что я не владею языками программирования и до сих пор не разобрался каким образом привязывать строки к айдишникам в dnSpy. Покажу только самый простой способ. Если тут есть специалисты, буду очень благодарен им если они подробно объяснят как это сделать.
dnSpy — вскроет любую программу
1. Открываем утилиту и перетаскиваем нужную нам dll-ку в левое окно программы. Раскрываем древо dll-ки.
2. Те, кто хоть раз имел отношение к переводу скриптов, без труда определят строки нуждающиеся в переводе, тем более они подсвечены. Но переводить нужно не всё подряд!
3. Итак, находим нужную строку лкм/пкм на ней и в контекстном меню выбираем Изменить инструкции IL. либо Изменить метод (C#).
4. После декомпиляции откроется ещё одно окно, в котором и нужно будет перевести все строки в этом блоке.
5. После перевода жмём Ок и ищем строки которые нужно перевести в других блоках. Тут нужно учитывать то, что во взятом для примера моде Читы для Баннерлорда, большая часть перевода вынесена из dll-ки в отдельный файл L10N.resx , поэтому переводить в dll-ке нужно только то, чего нет в этом файле. А нет там вот этих строк из окон Персонажа, Инвентаря, Отряда, Клана и Энциклопедии. В других модах может быть по-другому, — например, часть или весь текст может содержаться в xml-файле. Поступайте по ситуации.
6. После того как мы полностью переведём dll-ку, жмём Файл и в меню выбираем Сохранить модуль , откроется ещё одно окошко где нужно опять подтвердить Ок .
7. Всё, перевод завершён. Закрываем программу, переносим переведённый мод в игру и проверяем.
Гляньте дополнительные скрины, если что.
Источник: gamer-mods.ru
Модифицируем Last Epoch — От dnSpy до Ghidra
Last Epoch — это однопользовательская ARPG на Unity и C#. В игре присутствует система крафта — игрок находит модификаторы, которые затем применяет к экипировке. С каждым модификатором накапливается «нестабильность», которая увеличивает шанс поломки предмета
Я преследовал две цели:
- Убрать «поломку» предмета в результате применения модификаторов
- Не расходовать модификаторы при крафте
Вот так выглядит окно крафта в игре:
Часть первая, где мы редактируем .NET код без регистрации и смс
Для начала я опишу процесс модификации старой версии игры (0.7.8)
После компиляции C# превращается в IL (Intermediate Language) код. IL-код напоминает ассемблер высокого уровня абстракции и замечательно декомпилируется. В Unity проектах IL-код игры как правило находится в /Managed/Assembly-CSharp.dll
Для редактирования IL-кода мы будем использовать dnSpy — лучший из всех инструментов подобного рода для .NET, что я встречал. dnSpy делает работу со скомпилированными .NET приложениями настолько легкой, что ее можно спутать с разработкой в обычной IDE.
Ищем логику крафта
Итак, запускаем dnSpy и открываем Assembly-CSharp.dll