Подтвердить что ты не робот

Dotnet dll декомпилирует и изменяет код

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

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

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

  • ILSpy
  • DisSharp
  • Reflector7.1 С плагином Reflexil
  • Spices.Net.Suite.5.8
  • Deploy.NET 1.0.0
  • devextras.codereflect
  • dotPeek-1.0.0.2545
  • IntelliLock
  • JustDecompile_BETA_2011.1.728.1

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

4b9b3361

Ответ 1

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

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

Ответ 2

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