API挂钩会影响所有进程吗?

时间:2013-05-31 10:18:24

标签: windows winapi hook

假设一个钩子给定DLL的功能。 是否所有使用该特定DLL的特定函数的进程都受到挂钩的影响?

例如,如果要从MessageBoxA挂钩user32.dll,那么它不会弹出MessageBox,而是将Beatles的 Yellow Submarine 作为系统声音播放。调用MessageBoxA的所有进程都会遇到这种相当奇怪的行为吗?

-JoãoSilva

1 个答案:

答案 0 :(得分:1)

一般来说,它会具体处理。

当您加载DLL时,Windows会将dll加载到您的内存空间中。如果dll已经加载到内存中(并映射到某个进程的空间),那么windows将只将内存映射到您的进程空间。

然而,当您应用挂钩时,内存会被更改,因此Windows将为您的进程制作所述内存的副本。

读取内存映射文件(这是用于加载代码的窗口的技术)