1

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

例如,如果要挂断MessageBoxAuser32.dll而不是弹出消息框,它会播放披头士乐队的黄色潜水艇作为系统声音。所有进程调用都会MessageBoxA遇到这种相当奇怪的行为吗?

——若昂席尔瓦

4

1 回答 1

1

一般来说,它会处理特定的。

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

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

阅读内存映射文件(这方面的技术是 windows 用来加载代码的技术)

于 2013-05-31T10:24:51.857 回答