2011-01-20 32 views
1

私はReflectorというツールでdllを逆コンパイルしようとしていますが、完全なコードではなく定義のみを表示します。理由は何ですか?どうすれば完全に逆コンパイルできますか?DLLの逆コンパイル

よろしくお願いいたします。

+0

スクリーンショットを提供します。あなたが何を意味するか分かりません。 – leppie

+0

大丈夫よ、すみません。これは私がexternが何を意味するのかを知ったポイントです。メソッドは他の場所で実装されています。今私は残りを理解しようとしています。逆コンパイルされたコードの例を次に示します。[MethodImpl(MethodImplOptions.InternalCall、MethodCodeType = MethodCodeType.Runtime)、TypeLibFunc((short)0x40)、DispId(0x2f)] public virtual extern void _DoCommand([In、MarshalAs(UnmanagedType.BStr )]文字列動詞、[In、MarshalAs(UnmanagedType.BStr)]文字列PlugInKey = ""); – Feyyaz

+1

@Saha:それは混在モードアセンブリであることを意味します。あなたが求めている機能には.NETコード(MSIL)がなく、ネイティブマシンコードだけが.NETメタデータでラップされています。リフレクターはそれを助けません。 –

答えて

1

混在モードのDLLですか?逆コンパイルされたソースを表示する方法を拡張しましたか?

FileDisassemblerプラグインが役立つ可能性があります(これが最新バージョンの場合はわかりません)。

1

アセンブリ、名前空間、クラス、またはメンバーを右クリックし、コンテキストメニューから「逆アセンブル」を選択します。 \ YourDirectoryNameを:またはショートカットとして、右あなたが

はCを付けてエクスポート

をクリック抽出したいDLLをクリックして、スペースバー

+0

それは助けにはなりません。 – Feyyaz

+1

@sahsは "役に立たない"と定義していますか?何が起こるのですか?あなたは何を見ますか? –

0

オープンリフレクター

を押してください。あなたがCであなたの抽出されたコードを持つことになります

:\ YourDirectoryName

0

をリフレクタ内のコードを表示するには、メソッドにを移動する必要があります。 タイプを見ているなら、逆アセンブルされたときでさえ、定義を表示します(ただし、「メソッドの拡張」ボタンが役に立つことがあります)。

メソッドを見ても、dllがコードから難読化されているか、コンパイルされていない可能性があります(ILはほとんどの言語にマップするのが難しい)。

+1

それでもMSILと表示できます。彼が持っているものは、ネイティブコードと.NETメタデータを含む混合モードアセンブリですが、MSILはありません。逆コンパイルはありません。 C++/CLIは、そのようなアセンブリを作成する最も一般的な方法です。 –

0

リフレクタでは、左側のツリービューをドリルダウンして、コードを表示するタイプを探します。見つけたら、それをクリックして選択し、スペースバーを押してください。次に、右側にメソッド宣言が表示されます。そのビューの一番下までスクロールし、緑の「メソッドを展開」ハイパーリンクをクリックします。

また、ツリービューでその種類を展開し、個々の方法を選択してスペースバーを押します。

+1

OT:そんなにかわいい鍵をどうやって作っていますか? – leppie

+2

@leppie: 'ここにキー名' –

関連する問題