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