Dotnet DLL декомпилировать и изменить код - PullRequest
22 голосов
/ 12 сентября 2011

Мне нужно изменить код .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 ]

9 голосов
/ 09 сентября 2014

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

"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).

8 голосов
/ 12 сентября 2011

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

...