假设一个钩子给定DLL的功能。 是否所有使用该特定DLL的特定函数的进程都受到挂钩的影响?
例如,如果要从MessageBoxA
挂钩user32.dll
,那么它不会弹出MessageBox,而是将Beatles的 Yellow Submarine 作为系统声音播放。调用MessageBoxA
的所有进程都会遇到这种相当奇怪的行为吗?
-JoãoSilva
答案 0 :(得分:1)
一般来说,它会具体处理。
当您加载DLL时,Windows会将dll加载到您的内存空间中。如果dll已经加载到内存中(并映射到某个进程的空间),那么windows将只将内存映射到您的进程空间。
然而,当您应用挂钩时,内存会被更改,因此Windows将为您的进程制作所述内存的副本。
读取内存映射文件(这是用于加载代码的窗口的技术)