代码改变世界

关于dll的一点收获

2013-10-09 14:56  HGtz2222  阅读(178)  评论(0编辑  收藏  举报

蒙贾神指点. 

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

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

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

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