夕暮ログ

C#やJavascript、最近はAndroidなんかも好きなtinqのブログ。「夕暮れログ」

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

ILSpy(2)基本的な使い方

C#やVB.NETで作られたソフトやライブラリを解析、逆コンパイルできる、ILSpyの基本的な使い方です。
UIなどについての説明です。
インストール法についてはこちらの記事を参考にしてください。

基本的な使い方


  1. メインメニューです。詳しくは後へ。
  2. 各種機能へアクセスするツールバーです。
       
    • Back : 前に開いたページに戻ります
    •  
    • Forward : (<=)で前に戻ったときに、先に進みます
    •  
    • Open : .NETアセンブリーファイル(C#やVB.NETなどでコンパイルされたファイル)を指定して、解析します。.NETではないファイルを選択すると、解析はできず、右側のスペースに例外が表示されます。
    • Reload all assemblies: 解析されているアセンブリーをすべて読み込み直します。
    • Show internal types and members : インターナルなタイプとメンバーを表示する。これのチェックをはずすと、アクセス修飾子がinternalなクラスや構造体、名前空間が表示されなくなります。メソッドやプロパティは表示されたままのようです
    • 表示する内容を、C#かILか選びます。
  3. 読み込んだアセンブリの一覧が表示されるツリービューです。
    [+]を押すと、その中の名前空間、クラス、構造体、メソッド、プロパティ、フィールドなどを表示します。
    また、リソースも表示されます。
    それらをクリックすると、(5)に内容が表示されます。(2)の6の指定によって、ILかC#で表示されます。
  4. アセンブリを絞り込みます。
    たとえば、TextBoxクラスを検索したければ、TextBoxと入れましょう。
    System.Drawingなどと指定すると、名前空間も検索できます。しかし、System.Drawing.Pointのようにクラス、構造体まで一度に指定することはできないようです。もちろん、メソッド、プロパティなどの名前も検索できます。
    また、大文字小文字は区別しないようです。
    C#で特別な使い方ができるものは、その名前で表示されています。たとえば、System.Stringはstring、System.Int32はintになります。
  5. ツリービューで選択をすると、ここに表示されます。
    クラス名などをクリックすると、その場所に飛んで表示してくれます。(4)で絞込みをしているとそこの部分には飛んでくれません。絞込みを行っていたら、解除しておきましょう。
    左の[+]を押すと関数なども展開されて、逆コンパイルした結果を見られます。

ちなみに、.NETで最初からよく使われているものは、ほとんどmscorlibの中にあります。stringなどの基本型もそうです。初期であるものを探す場合、その中を探して見ましょう。

メインメニュー

続いて、メニューの中身です。

[File]=>[開く]
ここだけ、なぜか日本語です。
先ほどのツールバーの、3と同じで、.NETアセンブリを指定します。
[File]=>[Open from GAC]
GAC(グローバル・アセンブリ・キャッシュ)から読み込みます。GACは簡単に言うと参照の追加で一覧表示されているもので、どの.NETのソフトからも参照できます。
最初から用意されている、System.Drawingや、System.Windows.FormsもGACにあり、ここから追加できます。
詳しくは、アセンブリのロードあたりを参考にしてみてください。
[File]=>[Reload]
ツールバーと同じくすべてのアセンブリを再読み込みします。
[File]=>[Save Code]
現在開いているファイルをファイルに保存します。選択すると、保存ダイアログが表示されます。
[File]=>[Exit]
ソフトを終了します
[View]=>[Show internal types and members]
ツールバーのものと同じです。
[View]=>[Show analyzer]
右側に、Analyzerと書かれたスペースが出現します。よくわかりませんorzわかりしだい書きます。
[View]=>[Option]
オプションの設定をします。
->[Decompile anonymous methods/lambdas](匿名メソッド/ラムダ式をデコンパイルする)
匿名メソッド/ラムダ式があった場合、それを使ったコードを表示します。これにチェックをつけないとぐちゃぐちゃなコードが出力されてしまいます。
->[Decompile enumerators (yield return)](列挙子(yield return)をデコンパイルする)
yield returnを使ったforeachで使える列挙できる型を返す関数がある場合、yield returnを使います。
これもつけないとかなりわかりにくいコードになります。
->[Decompile query expressions](クエリ式をデコンパイル)
LINQをメソッド式ではなく、クエリ形式にします。詳しくは、事項あたりで解説。
[Help]=>[About]
バージョン情報を表示します。起動時に表示されているのと同じです。


これだけです。
操作は簡単なので、すぐに慣れると思います。
気になる処理をしているメソッドを思い出して、どうなっているのか見てみてください。
新しい発見があるかもしれません
次回、具体的な逆コンパイル例などをやります。
関連記事

コメント

ここをクリックしてコメントを投稿

非公開コメント

トラックバック

http://tinqwill.blog59.fc2.com/tb.php/22-adafd2c5

« next  ホーム  prev »

プロフィール

tinq tinq(もしくはTinqWill)

Sky  For   Every 改装予定

プログラミングお勉強中の高校生。月一くらいは更新したい

最新記事

カテゴリ

月別アーカイブ

検索フォーム

最新コメント

リンク

最新トラックバック

FC2Ad

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。