关于dll的一点收获

蒙贾神指点. 

对于kernel32.dll这种系统dll, 每一个进程都会加载一份, 映射到自己的进程空间. 实际上物理内存上还是只有一份dll. 

如果对进程自己的dll进行修改, 这时操作系统会触发写时复制机制, 重新再复制一份dll的代码. 

这样既不会破坏进程访问内存的封装性, 又不会映射多份冗余的dll代码. 

因此, 在应用层hook系统dll只能影响到本进程. 只有在驱动层hook才能影响到所有的进程. 

原文地址:https://www.cnblogs.com/HGtz2222/p/3359233.html