首页
社区
课程
招聘
[求助]NtCreateProcess()函数疑问
发表于: 2009-6-8 22:49 8070

[求助]NtCreateProcess()函数疑问

2009-6-8 22:49
8070
所谓创建内核中的进程对象,实际上就是创建以EPROCESS为核心、为基础的相关数据结构,这就是系统调用NtCreateProcess()要做的事情,主要包括:
    ● 分配并设置EPROCESS数据结构。
    ● 其他相关的数据结构的设置,例如“打开对象表”。
    ● 为目标进程创建初始的地址空间。
    ● 对目标进程的“内核进程块”KPROCESS进行初始化。
    ● 将系统DLL的映像映射到目标进程的(用户)地址空间。
    ● 将目标进程的映像映射到其自身的用户空间。
    ● 设置好目标进程的“进程环境块”PEB。
    ● 映射其他需要映射到用户空间的数据结构,例如与“当地语言支持”、即NLS有关的数据结构。
    ● 完成EPROCESS创建,将其挂入进程队列(注意受调度的是线程队列而不是进程队列)。
    这里将系统DLL、实际上是ntdll.dll、映射到目标进程的用户空间是很关键的。这是因为,除别的、主流的功能和作用外,ntdll.dll同时也起着相当于Linux中ELF“解释器”

的作用,也担负着为目标映像建立动态连接的任务。

请教各位一下,看了NtCreateProcess()系统函数,怎么没有见到ntdll.dll映射到进程空间中啊。具体是哪个函数调用的啊。

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 212
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
是不是PspMapSystemDll哦
等高人解答。。
2009-6-9 13:46
0
雪    币: 364
活跃值: (152)
能力值: ( LV12,RANK:450 )
在线值:
发帖
回帖
粉丝
3
是!!

PspInitializeSystemDll初始化系统DLL(ntdll.dll),

PspMapSystemDLL将其映射到用户空间
2009-6-9 13:57
0
雪    币: 252
活跃值: (13)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
谢谢两位的回答,但我意思是NtCreateProcess()函数里面应该会有调用啊。但是没有看到啊?
2009-6-9 15:04
0
雪    币: 364
活跃值: (152)
能力值: ( LV12,RANK:450 )
在线值:
发帖
回帖
粉丝
5
是PspCreateProcess 中调用的
2009-6-9 16:16
0
雪    币: 252
活跃值: (13)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
ths! WRK里没有找到,在NT里才找到, if ( NT_SUCCESS(st) ) {
            st = PspMapSystemDll(Process,NULL);
        }
2009-6-9 17:25
0
雪    币: 635
活跃值: (101)
能力值: ( LV12,RANK:420 )
在线值:
发帖
回帖
粉丝
7
wrk中换成了PsMapSystemDll函数
并由MmInitializeProcessAddressSpace调用(NtCreateProcessEx调用MmInitializeProcessAddressSpace)
2009-6-9 17:53
0
游客
登录 | 注册 方可回帖
返回
//