web-dev-qa-db-ja.com

コンパイル済みの.NetExeを変更する

私はC#で書かれたアプリケーションを持っています(もちろんソースなしで)、それは少し変更する必要があります。たとえば、不要なメニューを作成する数行のコードを停止する必要があります。だから私はそれらをコメントアウトする必要があると思います。

ソースコードは難読化されていません。 Reflector/Reflexilなどのツールを使用して、完全に逆コンパイル、変更、および再度コンパイルできることを知っています。しかし、これを行うことにより、コードの多くの部分が再びコンパイルされないことを誰もが知っています!リフレクター(または他の製品)に、このプロセスなしで一部を無効化/変更できる方法はありますか?

ありがとう。

12
Delphi.Boy

最終的に、コンパイルされたexeファイルの数行のコードを「無効」にすることができました。

ReflexilプラグインがインストールされたReflectorを使用しました。 Reflexilを使用すると、MSIL命令を編集して、結果をexeファイルに保存することができました。そのため、いくつかのMSIL命令、特に「nooperation」コマンド(コード行に何もしない)を学習する必要がありました。手順のリストとチュートリアルを表示するには、 ここ および ここ を参照してください。

それが他の誰かを助けることを願っています。

4
Delphi.Boy

DnSpyを試してみることをお勧めします。これは、ILSpyからフォークされた.NETアセンブリエディター、デコンパイラー、およびデバッガーです。

https://github.com/0xd4d/dnSpy

19
Milos

本当にこれを行う必要がある場合は、Reflector(または同様の製品)で逆コンパイルし、それを使用して、同じ実行可能ファイルを生成する.Netでソリューションを再作成してみてください。

次の問題が発生する可能性があります。

  1. 難読化されたコード
  2. 逆コンパイルで特定のセクションの正確なコードが表示されるセクションですが、何らかの理由で新しいソリューションでは機能しません(そしてどうしますか?)

これは、これを行うことに関連する潜在的な法的問題は言うまでもありません。実行可能ファイルがこれを許可するライセンスの下でリリースされた場合、おそらくソースコードにアクセスできます。したがって、ソースコードにアクセスできないという事実は、提案していることを行うことが合法ではない可能性があることを意味します。

5
Yaakov Ellis

完全を期すために:別の可能な解決策は、ildasmを使用することです http://msdn.Microsoft.com/en-US/library/f7dy01k1%28v=vs.80%29.aspx MSIL Disassembler 、MSILを編集して、ilasmにフィードバックします。

このソリューションがどれほど実用的かは、もちろんあなた次第です

3
Samuel

このスレッドは役立つかもしれません: dotnet dllの逆コンパイルとコードの変更

前回、リフレクションを使用してソースを逆コンパイルしようとしたとき、dllが難読化されていませんが、リソースやその他のサブに関してコンパイルの問題が多すぎました。したがって、新しいdllを古いdllとして機能させるために、ソースを抽出して変更するだけではないことがあります。

したがって、他のスレッドで言及されているオプションのいずれかを使用して、直接dll操作を行うことをお勧めします。

1
Krishna Sarma