与其说是一种技术,不如说是一种技术思想。它使用了前面讲的那些Hook手段,来达到自己的目的。
其应用环境是这样的,自己有一个进程在运行,这个进程是自己可以控制的,但由于业务的需要,自己又要执行另一个应用程序,这个应用程序可能是Word,Notepad,Photoshop等应用程序,自己只可以看见它在运行,却不能控制它的执行过程。但是,这个进程明明是自己的进程创建的,因此,完全由必要控制它干些什么,不干什么。这种考虑,我们将一个Dll注入到它里面,让这个Dll为我们办事,这就是建立远程线程。这个线程的运行空间,同要注入的应用程序的地址空间是一致的。
我的方法是这样的:
首先,不论是通过Hook IAT表,或者是修改内存代码,我们在自己的进程中,Hook掉CreateProcessA,CreateProcessW,当要创建进程时,先来CreateRemoteThread,这也就是Hook技术3里面讲到的。而这个Thread里面,加载一下咱们预先写的Dll,在Dll的main函数里,写一段Hook代码,只要它一被加载,就Hook掉进程空间内的某个功能,这个,我们便对目标进程有了制程权。