Win7甚至在它之前开始,想要hook进程创建已经不能简单的HookCreateProcessInternalW这一个函数了,因为Vista开始引入了UAC机制。如果一个进程想要通过UAC弹窗创建管理员进程,hook这个进程的CreateProcessInternalW已经不起作用,我在几年前的博文《Win7/VistaHook CreateProcess 的特别之处》(http://blog.youkuaiyun.com/myjisgreat/article/details/46478247)已经提到了这点变化,并且给出了解决方案,Hook SHCreateProcess。然而据我最近的研究,Win10已经没有SHCreateProcess这个函数了。所以本文以Win10 x64版本的Explorer为蓝本,研究Win10下创建进程的接口,并给出Hook进程创建的解决方案。
我首先hook了KERNELBASE!CreateProcessInternalW,通过回溯,可以找到explorer的创建进程调用栈如下:
KERNELBASE!CreateProcessInternalW
KERNELBASE!CreateProcessW+0x66
KERNEL32!CreateProces