セージ の メモ書き

メモこそ命の恩人だ

C# - IL/ILSpy

IL (Intermediate Language:中間言語)

共通中間言語 - Wikipedia

言語 処理
高級言語
IL (中間言語) "MSBuild" により、高級言語から生成
マシン語 "JITコンパイラー" により、中間言語から生成
  • 特徴
    • VisualStudio(MSBuild) でビルドした生成物。exe ファイル。
    • OS や CPU に依存しない状態である。
    • IL 以外に、以下の呼ばれ方もする。
      • CIL (Common intermediate language)
      • MSILコード (Microsoft Intermediate Language)
      • Java の場合、Byteコード
  • メリット
    • 動作環境 (OS、CPU など)の依存を低減できる。
    • なので、動作環境ごとのビルドが不要。
  • デメリット
  • 補足:JIT コンパイラ


ILSpy

Microsoft Apps

  • IL の内容を閲覧できるツール。
  • .NET の exe や dll をリバースエンジニアリングできる。
  • ダウンロード
  • 使い方
    • ZIPを解凍し "ILSpy.exe" を実行する。
    • ツリービューを Ctrl + a で全選択し、右クリック→remove で削除。
    • 該当の exe か dll をツリービューのエリアへドラッグ&ドロップ。

以下のコンソールアプリの中を見れるか試してみる。
release ビルドの dll をチェック。(.NET 6)

var sample = new SampleClass();
Console.WriteLine(sample.IsEqual("1234"));

internal class SampleClass
{
    public bool IsEqual(string pass)
    {
        var password = "1234";
        return pass == password;
    }
}
  • ツリービューのルートから、フレームワークの種類がわかる。
  • クラスごとのソースを解析できる。パスワードをべた書きすると危険。



以上