-
-
[求助]NtCreateProcess()函数疑问
-
-
[求助]NtCreateProcess()函数疑问
所谓创建内核中的进程对象,实际上就是创建以EPROCESS为核心、为基础的相关数据结构,这就是系统调用NtCreateProcess()要做的事情,主要包括:
● 分配并设置EPROCESS数据结构。
● 其他相关的数据结构的设置,例如“打开对象表”。
● 为目标进程创建初始的地址空间。
● 对目标进程的“内核进程块”KPROCESS进行初始化。
● 将系统DLL的映像映射到目标进程的(用户)地址空间。
● 将目标进程的映像映射到其自身的用户空间。
● 设置好目标进程的“进程环境块”PEB。
● 映射其他需要映射到用户空间的数据结构,例如与“当地语言支持”、即NLS有关的数据结构。
● 完成EPROCESS创建,将其挂入进程队列(注意受调度的是线程队列而不是进程队列)。
这里将系统DLL、实际上是ntdll.dll、映射到目标进程的用户空间是很关键的。这是因为,除别的、主流的功能和作用外,ntdll.dll同时也起着相当于Linux中ELF“解释器”
的作用,也担负着为目标映像建立动态连接的任务。
请教各位一下,看了NtCreateProcess()系统函数,怎么没有见到ntdll.dll映射到进程空间中啊。具体是哪个函数调用的啊。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课