私はReflectorというツールでdllを逆コンパイルしようとしていますが、完全なコードではなく定義のみを表示します。理由は何ですか?どうすれば完全に逆コンパイルできますか?DLLの逆コンパイル
よろしくお願いいたします。
私はReflectorというツールでdllを逆コンパイルしようとしていますが、完全なコードではなく定義のみを表示します。理由は何ですか?どうすれば完全に逆コンパイルできますか?DLLの逆コンパイル
よろしくお願いいたします。
混在モードのDLLですか?逆コンパイルされたソースを表示する方法を拡張しましたか?
FileDisassembler
プラグインが役立つ可能性があります(これが最新バージョンの場合はわかりません)。
アセンブリ、名前空間、クラス、またはメンバーを右クリックし、コンテキストメニューから「逆アセンブル」を選択します。 \ YourDirectoryNameを:またはショートカットとして、右あなたが
はCを付けてエクスポート
をクリック抽出したいDLLをクリックして、スペースバー
それは助けにはなりません。 – Feyyaz
@sahsは "役に立たない"と定義していますか?何が起こるのですか?あなたは何を見ますか? –
オープンリフレクター
を押してください。あなたがCであなたの抽出されたコードを持つことになります
:\ YourDirectoryName
をリフレクタ内のコードを表示するには、メソッドにを移動する必要があります。 タイプを見ているなら、逆アセンブルされたときでさえ、定義を表示します(ただし、「メソッドの拡張」ボタンが役に立つことがあります)。
メソッドを見ても、dllがコードから難読化されているか、コンパイルされていない可能性があります(ILはほとんどの言語にマップするのが難しい)。
それでもMSILと表示できます。彼が持っているものは、ネイティブコードと.NETメタデータを含む混合モードアセンブリですが、MSILはありません。逆コンパイルはありません。 C++/CLIは、そのようなアセンブリを作成する最も一般的な方法です。 –
リフレクタでは、左側のツリービューをドリルダウンして、コードを表示するタイプを探します。見つけたら、それをクリックして選択し、スペースバーを押してください。次に、右側にメソッド宣言が表示されます。そのビューの一番下までスクロールし、緑の「メソッドを展開」ハイパーリンクをクリックします。
また、ツリービューでその種類を展開し、個々の方法を選択してスペースバーを押します。
OT:そんなにかわいい鍵をどうやって作っていますか? – leppie
@leppie: 'ここにキー名' –
スクリーンショットを提供します。あなたが何を意味するか分かりません。 – leppie
大丈夫よ、すみません。これは私が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
@Saha:それは混在モードアセンブリであることを意味します。あなたが求めている機能には.NETコード(MSIL)がなく、ネイティブマシンコードだけが.NETメタデータでラップされています。リフレクターはそれを助けません。 –