.exe文件如何与Windows内核交互?同样适用于Linux .bin文件

时间:2013-06-09 04:53:09

标签: linux windows compiler-construction

假设我有一个A.exe文件,我想在我的Windows机器X上运行它。 我想知道这个A.exe文件如何与X中的Windows内核函数交互? A.exe文件是否已包含将在其自己的二进制文件中调用的所有Windows内核函数?或A.exe将在机器X中找到内核函数的地址并调用它?

同样,.bin文件如何与Linux内核函数交互?

2 个答案:

答案 0 :(得分:1)

.exe文件将链接到Windows .dll文件并调用它们(通过将DLL加载到内存,然后在DLL中使用名称 - >内存映射)。一些.dll调用将保留在用户空间中并进行计算/返回值。有些会调用中断,这将导致操作系统实现的中断处理程序运行。该中断处理程序有权提高其优先级并访问所有OS的内存。它可以直接执行任何进一步的操作,也可以安排它们稍后由OS线程完成。但是所有这些函数的代码都在DLL中。中断处理程序的代码以及它可能调用或导致调用的任何例程都在加载操作系统时启动的其他文件中。

答案 1 :(得分:1)

可排除的文件将执行特殊指令,例如int 0x80sysenter并导致异常。然后机器查找一个名为IDT的表(用于int 0x80)或输入在MSR中指定的系统调用处理程序(用于sysenter)并开始执行系统调用处理函数