web-dev-qa-db-ja.com

dotnet dllを逆コンパイルしてコードを変更する

.NET DLLのコードを変更する必要があります。 DLLを.NETリフレクターでコンパイルしてコードを表示できますが、DLLのコードを変更できません。NETリフレクターを使用して、コードを逆コンパイルし、私のハードディスクに、しかし私がコードを再コンパイルすることができるときそれを与えるエラー。

バイナリ形式で逆コンパイルされるコードはほとんどなく、c#で逆コンパイルされるコードはほとんどありません。 DLLを変更して再コンパイルするツールはありますか?

DLLを逆コンパイルするために使用したツールは次のとおりです。

  • ILSpy
  • DisSharp
  • Reflexilプラグインを使用したReflector7.1
  • Spices.Net.Suite.5.8
  • .NET 1.0.0をデプロイする
  • devextras.codereflect
  • dotPeek-1.0.0.2545
  • インテリロック
  • JustDecompile_BETA_2011.1.728.1

残念ながら、DLLコードを再コンパイルするための完璧なソースコードを提供するツールはありません。

22
user900492

次のコードは機能しています:

"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フレームワーク(ilasm)に由来しています。

9
Jarekczek

DLLの再コンパイルは成功しませんでした。それを行うためのより良い方法は、Reflectorと Reflexil プラグインを使用することです。 .NETアセンブリを構成するILコードについて少し知識が必要ですが、ReflexilはOPコードの記述に優れています。 PowerShellコマンドレットヘルプエディターをどのように変更したかについて、ブログで少し説明します。 http://csharpening.net/?p=348

7
Adam Driscoll