36

つまり、.exeファイルはWindowsで実行できるファイルですが、正確には何が含まれているのでしょうか。プロセッサ固有のアセンブリ言語?または、特定のプロセッサのアセンブリに変換するWindowsによって認識されるある種の中間ステートメントですか?Windowsがファイルを「実行」するとき、ファイルは正確に何をしますか?

4

4 に答える 4

45

MSDNには、実行可能ファイルの構造を説明する記事「Win32Portable実行可能ファイル形式の詳細」があります。

基本的に、.exeには、データのいくつかのブロブと、それらをメモリにロードする方法に関する指示が含まれています。これらのセクションの一部には、実行可能なマシンコードが含まれています(他のセクションには、プログラムデータ、リソース、再配置情報、インポート情報などが含まれています)。

exeを実行したときに何が起こるかについての完全な説明については、WindowsInternalsコピーを入手することをお勧めします。

ネイティブ実行可能ファイルの場合、マシンコードはプラットフォーム固有です。.exeのヘッダーは、.exeのプラットフォームを示します。

ネイティブの.exeを実行すると、次のことが発生します(大幅に簡略化されています)。

  • プロセスオブジェクトが作成されます。
  • exeファイルがそのプロセスのメモリに読み込まれます。.exeのさまざまなセクション(コード、データなど)が個別にマップされ、さまざまなアクセス許可が付与されます(コードは実行、データは読み取り/書き込み、定数は読み取り専用)。
  • 再配置は.exeで発生します(.exeが優先アドレスにロードされていない場合、アドレスにパッチが適用されます)。
  • インポートテーブルがウォークされ、依存DLLがロードされます。
  • DLLは、.exeと同様の方法でマップされ、再配置が行われ、依存するDLLがロードされます。DLLからインポートされた関数が解決されます。
  • プロセスは、NTDLLの初期スタブで実行を開始します。
  • 最初のローダースタブは、各DLLのエントリポイントを実行してから、.exeのエントリポイントにジャンプします。

管理対象の実行可能ファイルにはMSIL(Microsoft Intermediate Language)が含まれており、CLRがサポートする任意のCPUをターゲットにできるようにコンパイルできます。私はCLRローダーの内部動作(CLRをブートストラップしてMSILの解釈を開始するためにネイティブコードが最初に実行するもの)にそれほど精通していません-おそらく他の誰かがそれについて詳しく説明することができます。

于 2009-09-30T00:51:37.120 に答える
15

.exeファイルの最初の2バイトに含まれるもの-'MZ'を教えてください。私は文字「MZ」を意味します。

それは実際に表しています:マーク・ズビコフスキー。exeファイル形式を設計した人。

http://en.wikipedia.org/wiki/Mark_Zbikowski

于 2009-09-30T01:03:40.847 に答える
11

1と0!

このウィキペディアのリンクには、Windowsアプリケーションで使用されるPortableExecutable形式で必要なすべての情報が記載されています。

于 2009-09-30T00:52:09.570 に答える
2

EXEファイルは、実際にはPortableExecutableと呼ばれるファイルの一種です。プロセッサが読み取って実行できるバイナリデータ(基本的にはx86命令)が含まれています。ヘッダーデータやその他のさまざまなコンテンツも多数あります。実際の実行可能コードは.text、と呼ばれるセクションにあり、マシン命令(プロセッサ固有)として保存されます。このコード(および.EXEの他の部分)はメモリに格納され、CPUがメモリに送信され、そこで実行が開始されます。(実際に発生しているインターフェースはもっとたくさんあることに注意してください。これは簡単な説明です)。

于 2016-01-17T03:09:19.633 に答える