好,趁着今天还有时间,我继续分享一个内容,也是关于如何让别人的应用程序加载你的 d2l 的。虽然关于这个话题我已经讲了两期了。 我们最早开始用的方法是打开别人的进程,打开别人的进程,获得别人进程的操作区别 或者别人的操作聚柄。之后申请内存得到这个 dl 的路径,把 dl 路径这一块写到别人的内存里面去,然后创建一个远程的县城来加载这个 dl。 ok, 这是一种把你的 dl 放到别人的进程里面去了方法。 然后我们上午更新的时候谈到过微软器上提供的一个方法,就是你在注册表里面登记这个 dl, 你可以在注册表 里面登记这个 dl, 然后温热水上面的这些窗口程序在起来运行的时候,他就会自动的去加载这个 dl。 这是两种方法,然后我现在说第三种方法。 先让第三种方法才是真正的根治苗红的方法。先让这个把你的 dl 放到别人的应用程序里面去。这个属于钩子技术户口。 这个实际上大家有时候一提到妇科就觉得是病毒,其实不是啊。 其实上这个钩子技术是未往官方许可的,而且而且未往官方也提供了那个相关的函数来实现这个东西。我们怎么理解钩子的?钩子可以把它理解为一个交通警,你所 没有经过这条道路的车辆都可以由他来检查一遍,你所有从这个道路上面经过的车辆都可以由他来检查一遍。 检查的内容可以由你的这个函数的性质来决定。 ok, 其实上钩子的装载方法有很多。嗯,钩子的消息类型也挺多的。 我今天说的这种方法呢,是一种比较普遍的通用的方法。我们有办法可以把你的一个 dll 放到别人的应用程序里面去,我们可以用到消息钩子。 这两个函数我已经打到屏幕上面去了,大家可以在那个 msdn 的官方网站上面去看一下。 我们装载这个点,然后钩子的类型是消息钩子,然后我们将这个钩子的消息面 相信念。怎么理解的?就像传递消息一样,一条一条的接着往下传。我们早年传递信件也是一站一站的,接着向下传递,直到所有的路途经过的地方全部都收到这个消息。 好,这个这样讲有点深受。直接看一下我们的这个程序运行起来是什么样的。 这是一个记事本,然后我们同样用这个上次提到的这个工具观察一个进程。他具体加载了哪些 dl, 我们看一下。现在很明显他没有加载我们的那个 dl。 我们现在通过消息钩子的方式尝试一下,看他是否可以把这个消息传递下去, 没有,对吧?嗯,看到没有, 是不是瞬间就出来了?我们再开一个程序, 对不对? 我们还可以接着开。别的程序 都被加载了,现在在此运行的程序都被加载了。这个 dl。 这是消息勾子做到的。 消息沟子和。不好意思,空气太干燥了。消息沟子和我们前两天所介绍的方法都有一点不太一样。嗯,我去看一下。代码, 大家可以看到这里,这是我刚才介绍的那个函数, 装载一个消息钩子,加载这个 dl 传递消息链, ok, 就这么简单,代码甚至比 比之前还要更简洁一点。是不是一目了然,就这么体罚 ok, 真的就这么简单。 我说了吗?其实他温热水里面有很多很神奇的功能,只是说你不知道这个方法是什么。微软都给你提供了非常丰富的系统函数,可以去实现这些功能。 现在很明显,这几个应用程序都装载到我的 dl l。 当然我这个 dl 里面什么都没做,只是做了一行打印。 如果说你想要你的 dl 里面却产生一些有作用的功能的话,那是我们后期的事情。我们现在先明白用什么样的方法,用什么样的方法 可以让你写的 dll 被其他的应用程序所装载。这是非常重要的一点,就是你要让别人的应用程序来装载你的。 今天是讲的第三种方法了。第三种方法了,我个人比较推荐于用那种消息购置的方式,因为它基本上是无害的。 大家再观察一个现象,刚才我们看到了这个消息钩子是由我的这个程序发起的,就是我发送消息的源头是由他来发起的。我试一下,把我这个程序关掉,结束掉。 结束掉之后,我回到了这个爱第一的开发环境里面的。嗯,我们观察一下。哎,看到没有?大家刚才看到这个现象没有?他当场消失了, 没了。看到没有,这说明什么?说明当我的这个消息发送者,消息发送 结束进程之后,这个其他应用程序装载进去的这个 dl 也退出去了。看到了没有?这个知识点非常非常的关键,刚才这个知识点非常非常的关键,当我的这个消息发送者结束了之后, 其他的这个装载的这个 dl 的程序的这个模块,他也会被自动的卸载掉,自动的卸载掉了这个模块。 这个形状。在很多情况下面这个用途是非常大的。嗯,大家可以发善心的去考虑一下。发善心的去考虑一下。如果有兴趣的话,可以在那个讨论区里面 给我大家一起讨论一下,也可以给我留言。呃,这块的代码我会分享出来。这块的代码我会分享出来。今天大家回顾一下三个三种 我们说过的三种装载 dl 的方式。三种装载 dl 的方式。今天基本上关于如何装载 dll, 把你写的 dl 被其他的应用程序装载,基本上会告一段落。其实上这个统称为一种注入技术, 就是相当于你写的代码被注入到了别人的程序代码里面去了。尽管那个成语是封闭的,是一个编译过来的可自信文件,一个封装过来的 ex 一文件,只要他是微软的系统程序,基本上这种方法是可以用的。我说的基本上不是绝对, 基本上绝大多数百分之九十万百分之九十情况下都是有用的。你可以对那个第三方开发的应用程序,通过这种方式来把你写的第二个注 进去。至于你的 dl 里面具体有发挥什么作用的话,那就看你的 dl 如何去写。这一块是我们后面的章节,里面会有专门去讨论这个话题。好,今天先到这里,拜拜。