我通过使用CreateToolhelp32SnapShot得到进程快照,通过成员th32ParentProcessID获取父进程ID,当时是对QQ.EXE这个进程做为例子,找出了它的父进程是EXPLORER.EXE,但是当我想通过API挂接时发现,EXPLORER.EXE有引入Kernel32.dll的相关函数,但是就是没有找到EXPLORER.EXE对CreateProcessA、CreateProcessW以及OpenProcess这些函数的引入(我是通过PE分析的方法来查找比对的),那么QQ.EXE这个进程是EXPLORER.EXE创建的,是通过什么方法创建的,难道不是用CreateProcess这个函数么?如果不是,又是通过什么函数来创建的呢?希望高手指点一下
ShellExecute
CreateProcess
都可以创建进程
ShellExecute 和 CreateProcess 一点关系都没有。他们都和CreateProcessInternalW有关系倒是真的
奇怪?我调试了一下,XP上调用次序大致是这样的:
ShellExecuteW -> ShellExecuteExW -> CreateProcessW ->CreateProcessInternalW -> NtCreateProcessEx
ShellExecuteW -> ShellExecuteExW -> CreateProcessW ->CreateProcessInternalW -> NtCreateProcessEx
============
和我试验的结果一样