.NET EXEを読み取り可能なC#ソースコードに逆コンパイルするにはどうすればよいですか?


259

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


2
OK。ここを見て... Teleriks JustDecompileは実際には逆コンパイルDLLのレッドゲイツリフレクターが完全に...めちゃくちゃに数多くの問題が...これまでリフレクター... JustDecompile ...完璧であったこと
マルク・ジョンストンを

1
私はかなり長い間JustDecompileを使用しており、csprojectをコンパイルする準備ができているソースファイルを逆コンパイルしてパッケージ化するのは本当に良いことです。それは開発において本当に活発で、彼らのリポジトリgithub.com/telerik/JustDecompileEngineに
David Chelliah '29

回答:


194

ReflectorとそのアドインFileDisassembler

リフレクターはソースコードを見ることができます。FileDisassemblerを使用すると、それをVSソリューションに変換できます。


4
Reflectorのコピーに[Export ...]オプションがあり、プラグインがインストールされていません。すべてのソースコードとリソースを含むVSプロジェクトを作成します。では、なぜ誰もがFileDisassemblerを提案しているのでしょうか。それはさらにいいです?
ルーカス、

ルーカス:箱から出して、これができる反射板を見たことがありません。FileDisassemblerは常に唯一の方法でした。たぶん、これは最近の歴史で変わったかもしれません。確認してみるよ。
GEOCHET 2008年

ライフセーバー!ばかげたお尻TFSは私のプロジェクトを削除しました。TFSに自分自身を削除するように指示しましたが、ローカルファイルシステムからプロジェクトを削除することは期待していませんでした。どうもありがとう。x
Christo 2013年

FileDisassemblerはどこにありますか?:/
トムスティッケル2015年

.Netフレームワークでのみ機能します。.Net core 3.0 exeで動作するツールはありますか?
Somnathカダム

144

Red Gateが.Net Reflectorの無料版はもうなくなると言ったとき、私はILSpyとTelerikのJustDecompileを使い始めました。ILSpyはJustDecompile(まだベータ版です)よりも正確に逆コンパイルできることがわかりました。Red Gateは彼らの決定を変更し、まだ.Net Reflectorの無料バージョンを持っていますが、今はILSpyが好きです。

ILSpy Webサイト(https://github.com/icsharpcode/ILSpy/)から:

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

ILSpyの機能

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

更新:

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

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

更新:

  • ILSpy 2.1は非同期/待機の逆コンパイルをサポートします

1
私は2.2を使用していますが、IL、VB.NET、およびC#への逆コンパイルをサポートしています。これはとても重宝しました。
投票コーヒー2014年

1
Telerikは、動作しているコンピューターから疑わしい情報を収集することに関心があり、ILSpyをソースからコンパイルできないようです。また、ILSpyバイナリは変数名を混合し、ソースコードにいくつかの奇妙な文字を入れます。
AaA

1
ILSpyにはVisual Studioアドインが含まれていることに注意してください。ILSpy 2.4では、Visual Studioのソースコードから逆コンパイルされた出力に直接移動する機能を追加しました。残念ながら、ILSpyメインラインにマージされた最新の修正がいくつかありましたが、2.4リリースにはなりませんでした。
ヨーヨー

鮮やかさ!問題を修正するためにサーバー上で「特別な」ツールを使用するために1人につき100ポンドを請求するソフトウェア会社があります。接続中に使用したツールのコピーを取得し、ILSpyを使用してツールのロック解除パスワードを簡単に取得できました。顧客を引き裂く必要はもうありません!
user2924019 2017年

ILSpyは最高のものです
Pritam

65

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

しかし、DevExtrasやJetBrainsのようないくつかの企業が無料の代替案を作成しました。

DevExtras CodeReflect

JetBrains DotPeek


5
リフレクターは35ドルくらいです。銀行を壊すことは知っていますが、その10倍の価値があります。
StingyJack

7
Telerik JustDecompileを無料の.NETアセンブリ逆コンパイラのリストに追加することも価値があります。telerik.com/justdecompile
Todd

3
@StingyJack:すばらしい、彼らがあなたの言うことを聞いたようです!VS2012逆アセンブラが必要な場合は、実際には10ドルで368ドルです。:/
DeepSpace101 2013

1
私はお金を稼ぐために彼らに対してそれを保持しませんが、@ Danielの答えのILSpy(言及)は私が現在使用しているものです。
StingyJack 2013

1
現在、標準バージョンは100ドル、Visual Studiosと統合するバージョンは200ドルです。それはインフレ率の一体です。彼らはオープンソース開発者に無料のものを提供していますが、reflectorblog.red-gate.com
2013/07 / open

35

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

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


dotPeekを使用すると、フォルダー全体を簡単に操作できるのが好きですが、現在のところ、C#にのみ逆コンパイルできます。他のほとんどの逆コンパイラもvbとILを実行します。また、Telerikは4.5.1をサポートしていますが、
Net4.5

したがって、dotPeekは完全に無料であるか、有料版には制限がありますか?ジェットブレーンのウェブサイトでそれに関する情報を見ることができませんでした。
batmaci

29

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


Telerikには、VB.NET、IL、またはC#.NETに逆コンパイルする機能があります。また、フレームワークを自動選択し、難読化解除に使用できるプラグインがあります。また、.NET 4.5.1もサポートしています。かなり良いようです。
投票コーヒー2014年

1
私はこの投稿ですべての解決策を試しましたが、JustDecompileが私にとって完璧に機能する唯一のものでした。
Alvaro Pereira

24

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

それを実行するには(VS 2013を想定し、他のバージョンでも同様である必要があります):

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

これで、DLL構造をナビゲートできます。クラスメンバーをダブルクリックして、ILを表示します。ファイル>ダンプを使用して、ILをファイルにエクスポートします。


IL DASMは少し野蛮だと思います。ツリーが表示されますが、右クリックしても何も起こりません。さらに、ファイルへのエクスポートのダンプは基本的にゴミです。それを見てください、それはどのようにそれがリモートで役立つことですか?
Tom Stickel、2015年

4
私はildasmが最良の選択肢であるとは決して主張しませんでした。_(ツ)_ /¯
ヨーヨー

いいえ、恐れていません。
ヨーヨー2017年

dotPeekでは、アセンブリ全体を検索して、そこにあることがわかっている文字列を検索できないことに本当に驚きました。ildasmはきれいではないかもしれませんが、少なくとも、探していた文字列を含むクラスを見つけるのに役立つダンプオプションがあります。
Gabe Halsmer、

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.