0

ファイルがあり、A.exeそれを Windows マシン X で実行したいとします。このA.exeファイルが X の Windows カーネル関数とどのように相互作用するか知りたいですか? A.exeファイルには、独自のバイナリ ファイル内で呼び出されるすべての Windows カーネル関数が既に含まれていますか? それともA.exe、マシン X のカーネル関数のアドレスを見つけて呼び出すのでしょうか?

同様に、.bin ファイルは Linux カーネル関数とどのように相互作用しますか?

4

2 に答える 2

1

.exe ファイルは、Windows .dll ファイルにリンクし、それらを呼び出します (DLL をメモリにロードし、DLL で名前 -> メモリ マッピングを使用します)。一部の .dll 呼び出しは、ユーザーランドにとどまり、計算を行ったり、値を返したりします。割り込みを呼び出すものもあり、OS によって実装された割り込みハンドラーが実行されます。この割り込みハンドラには、優先順位を上げて、OS のすべてのメモリにアクセスする権利があります。追加のアクションを直接実行することも、後で OS スレッドによって実行されるようにスケジュールすることもできます。ただし、これらすべての関数のコードは DLL 内にあります。割り込みハンドラーのコードと、それが呼び出す可能性のある、または呼び出される可能性のあるルーチンは、OS のロード時に起動される他のファイルにあります。

于 2013-06-09T04:59:22.423 に答える
1

実行可能ファイルまたはライブラリは、int 0x80またはなどの特別な命令を実行しsysenter、例外を引き起こします。次に、マシンは IDT というテーブルを検索するint 0x80か ( の場合)、MSR で指定されたシステムコール ハンドラに入り ( の場合sysenter)、システム コール ハンドラ関数の実行を開始します。

于 2013-06-09T04:59:39.090 に答える