Dotnet DLL декомпилировать и изменить код

Мне нужно изменить код.NET DLL. Я могу увидеть код скомпилированной DLL с рефлектором.NET, но я не могу изменить код DLL. С помощью.NET Reflector я декомпилирую код и сохраняю его на жесткий диск, но когда я могу перекомпилировать код, он выдает ошибки.

Немного кода декомпилируется в двоичном формате, немного кода декомпилируется с помощью C#. Есть ли инструмент для изменения и перекомпиляции DLL?

Вот инструменты, которые я использовал для попытки декомпилировать DLL:

  • ILSpy
  • DisSharp
  • Reflector7.1 с плагином Reflexil
  • Spices.Net.Suite.5.8
  • Разверните.NET 1.0.0
  • devextras.codereflect
  • dotPeek-1.0.0.2545
  • IntelliLock
  • JustDecompile_BETA_2011.1.728.1

К сожалению, ни один из инструментов не предоставляет идеальный исходный код для перекомпиляции кода DLL.

2 ответа

Следующий код работает:

"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\ildasm.exe" original.dll /out=code.asm
echo Here changes to code.asm should be done.
C:\Windows\Microsoft.NET\Framework\v4.0.30319\ilasm.exe /dll code.asm

Таким образом, если изменение в коде должно быть небольшим, это можно сделать, внеся изменения в код сборки напрямую. Можно скомпилировать и разобрать простые методы, чтобы увидеть, как должен выглядеть код сборки. Помещение дополнительных методов в сборочный файл также не должно быть слишком сложным.

Конечно, анализ кода должен выполняться с использованием инструментов, похожих на ilspy, с отображением исходного кода, а не кода сборки.

Используемые здесь инструменты приходят из Windows SDK (ildasm) и из.net framework (ilasm).

У меня был ограниченный успех в перекомпиляции DLL. Лучший способ сделать это - использовать Reflector и плагин Reflexil. Вам нужно немного лучше знать IL-код, который составляет сборки.NET, но Reflexil отлично справляется с описанием OP-кодов. У меня есть небольшой обзор блога о том, как я изменял редактор справки по командлету PowerShell: http://csharpening.net/?p=348

Другие вопросы по тегам