web-dev-qa-db-ja.com

.NET EXEを読みやすいC#ソースコードに逆コンパイルする方法を教えてください。

私は数年前にクライアント用のC#アプリケーションを書きましたが、私はもうソースコードを持っていません。私が持っているのは、クライアントのPCに展開したEXEだけです。 EXEからC#のソースコードを生成する方法はありますか?

247
MusiGenesis

リフレクタ とそのアドイン FileDisassembler

Reflectorはソースコードを見ることを可能にします。 FileDisassemblerを使用すると、VSソリューションに変換できます。

187
GEOCHET

Red Gateが.Net Reflectorの無料版はもう存在しないと言ったとき、私は ILSpy とTelerik を使い始めました。 JustDecompile 私はILSpyがJustDecompile(まだBetaにある)よりも正確に逆コンパイルすることを発見しました。 Red Gateは彼らの決断を変え、それでも.Net Reflectorの無料版を持っているが、今はILSpyが好きだ。

ILSpyのWebサイト( http://www.ilspy.net/ )から:

ILSpy は、オープンソースの.NETアセンブリブラウザおよびデコンパイラです。

ILSpyの機能

  • アセンブリ閲覧
  • IL分解
  • C#への逆コンパイル
  • ラムダと「利回り」をサポート
  • XML文書を表示します
  • リソースの節約
  • 型/メソッド/プロパティを検索する(部分文字列)
  • ハイパーリンクベースのタイプ/メソッド/プロパティナビゲーション
  • 基本/派生型ナビゲーション
  • ナビゲーション履歴
  • BAMLからXAMLへの逆コンパイラ
  • アセンブリをC#プロジェクトとして保存
  • フィールド/メソッドの使い方を探す
  • プラグイン経由で拡張可能(MEF)

更新:

2012年4月15日、ILSpy 2.0がリリースされました。バージョン1.0と比較した新機能:

  • アセンブリリスト
  • 式ツリーの逆コンパイルのサポート
  • ヌル可能オブジェクトでのリフト操作員のサポート
  • Visual Basicに逆コンパイルする
  • スペースで区切られた複数の文字列を検索します(ILSpy.exeで "Assembly manager"を検索するとAssemblyListManagerが見つかります)。
  • ローカル変数をクリックすると、その変数の他のすべての出現箇所が強調表示されます。
  • Ctrl + Fキーを押すと、逆コンパイルされたコードビュー内を検索できます。

更新:

  • ILSpy 2.1はasync/await逆コンパイルをサポートします
136
Daniel

Reflectorは一般に無料ではなくなりましたが、オープンソース開発者に無料で提供しています。 http://reflectorblog.red-gate.com/2013/07/open-source/

しかし、DevExtrasやJetBrainsのようないくつかの会社は、無料の代替手段を作成しました。

DevExtras CodeReflect

JetBrains DotPeek

64
arc

Denis BauerからのReflectorと File Disassembler アドイン。実際にはアセンブリからソースプロジェクトを生成します。ここで、Reflectorは単独で分解されたソースのみを表示します。

追加:私の最近のお気に入りはJetBrainsの dotPeek です。

34
ProfK

Telerik JustDecompile は無料で、.NETアセンブリからプロジェクトを作成する機能があります。

27
kodefuguru

Microsoftの ildasmについて誰も言及していないのは驚きです。 ILSpyやReflectorほど美しくないかもしれませんが、Visual Studioに付属しているので、多くの開発者がすでに持っています。

実行するには(VS 2013を想定して、他のバージョンでも同様であるべきです):

  1. [スタート]、[すべてのプログラム]、[Visual Studio 2013]、[Visual Studioツール]の順に選択します。
  2. VS2013用の開発者コマンドプロンプトをダブルクリックします。
  3. 結果のコマンドプロンプトから "ildasm"を実行します。
  4. ツールで、[ファイル] - [開く]を選択し、実行可能ファイルまたはDLLを開きます。

これでDLL構造をナビゲートできます。 ILを見るためにクラスメンバーをダブルクリックしなさい。 ILをファイルにエクスポートするには、File> Dumpを使用します。

24
yoyo

あなたは 反射鏡 が欲しいです。

14
Luke Halliwell