多线程hook,有没有更好的解决方法

如题所述

第1个回答  2018-05-05
先说多线程:
方法 1 : CreateThread
不用多说,万变不离其宗,这是 Win32 内创建线程的唯一系统方法,以下介绍的多线程创建方式虽然不直接接触这个 Win32 APi,但系统也是通过他创建的。

方法 2 : TimerSetEvent
这个函数是 Win32 系统的一个高精度计时器函数,通过调用这个函数,系统会创建一个新的线程,让Timer回调函数中的代码运行在这个新线程中。

方法 3 : SHCreateThread
很多人应该没见过这个函数,这是 shlwapi.dll 的一个导出函数,这个函数看字面也能理解是个创建多线程的函数,而且。。。 他是基于对象操作的多线程函数,也就是说他能够稳定的运行一些用上面2种方法创建,但不能稳定运行的代码。至少这个函数在 IDE 的环境下表现的中规中矩! 使用方法可查 API-GUIDE

方法 4 :CreateRemoteThread
创建远程线程,经测试一点也不稳定,根本没法说下去了,还不如直接调用 CreateThread
但,做为一种线程的创建方法,还是希望能够熟悉一下,如果不用VB写代码,要写跨进程线程,这是一个简单易行的办法,否则只能继续SetWindowHook了,熟悉汇编指令的还可以远程分配内存写硬编码执行

方法 5 : 简单说下 ActiveX 方式的多线程
用 ActiveX 创建线程与其他方式创建的线程最重要的地方要主义,任何VB函数的调用最好都建立在新线程中新初始化的对象基础上执行,不要跨对象调用,而 ActiveX 的安全线程本身也正是利用了这点,不知道研究 ActiveX 的老大们有没注意,利用他特性实现的多线程,是初始化的一个新的线程,而这个线程中初始化的对象则是整个工程。很大的资源浪费,而且有时候还不好控制,不是你想要的效果。总之一句话,新线程中要自己初始化新的对象而且最好不要用实例继承本回答被网友采纳
相似回答