我想问一下,
1.动态链接库的加载是不是就是把动态链接文件映射到内存,
2.而动态链接库一加载就会调用入口函数,全局钩子也会把DLL映射到目标进程,那么就是说他也会调用入口函数了,
3.程序关闭会自动卸载动态链接库,那么那个创建钩子的程序关闭之后,那些被映射的进程里的动态链接库有没有被卸载,
4.最后我想问个很俗的问题,到底什么是钩子,到底是创建了一个远程钩子管理着多个程序的信息,还是给每个程序都按了一个钩子

解决方案 »

  1.   

    1. 可以这么理解。是按照DLL中segment,分别加载了这些segment,使他们都到了应该到的地址上。2. 是。3 没有。理论上讲,目标进程内DLL其实跟你源进程里的DLL没什么关系了。4 根据钩子类型不同而不同。 什么钩子?如果指的是WindowsHook,那就是一组在windows下开发用的API,提供在指定操作流加装处理函数的能力。
      

  2.   

    1.动态链接库的加载,实际上是加载到应用程序地址空间。成为应用程序的一部分。2.当然是。3.一般来讲,钩子是一个DLL,而管理钩子的应用程序可以调用这个DLL中的函数,这时当然这个DLL插入到了应用程序的地址空间中,当管理程序调用DLL里面的函数安装钩子到别的应用程序时,这个DLL又被加载到那个应用程序的地址空间中。也就是说,此时,DLL已经被加载到两个应用程序的地址空间中,一个是管理钩子的应用程序,一个是被安装钩子的应用程序。当一个DLL被加载到两个或多个应用程序地址空间时,它的代码是共享的(也就是只有一份),而数据是私有的,也就是说,两个应用程序都使用DLL中的同一个变量时,它们实际上是不同的,互不相干。这给保护提供了方便,但给共享带来了麻烦,可以用某种方法创建在所有应用程序中共享的数据。4.钩子用微软的话来说就是一个“监视点”,在某应用程序中安装一个钩子以后,可以钩来消息,钩来消息的种类依据钩子的种类不同而不同。全局钩子貌似钩来所有应用程序的消息。