LoginSignup
2
0

More than 5 years have passed since last update.

C#で作るコンソールアプリケーションの.exeとwindowsアプリケーションの.exeの違い

Last updated at Posted at 2015-05-23

はじめに

簡単なC#ソースから2通りの方法で.exeを作成します.
そしてバイナリを比較します.

.exe作成

ソース

Cock.cs
class Cock
{
    static void Main()
    {
    }
}

/target:exeを指定

/c/Windows/Microsoft.NET/Framework/v4.0.30319/csc.exe /target:exe Cock.cs

/target:winexeを指定

/c/Windows/Microsoft.NET/Framework/v4.0.30319/csc.exe /target:winexe Cock.cs

比較

exeファイルを比較します.
3つ違う箇所があります.

  1. アドレス88h
  2. アドレスDCh
  3. アドレス440h~44Fh

1.はPEヘッダのCOFFヘッダのタイムスタンプです.
.exeを作成した時刻が異なります.

2.はPEヘッダのオプションヘッダのサブシステムです.
/target:exeの場合は3,/target:winexeの場合は2になります.
XBOXもあるらしい

3.はモジュールバージョンIDであり,GUIDです.
この値は.exe作成のたびに変わります./taget:は関係ありません.
今回はぐうぜんにも16バイト全て違う値になった.うれしかった.

Assembly.ManifestModule.ModuleVersionId

おわりに

サブシステムの値が異なります.

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0