关于内核创建进程初始化失败的问题
见习学术士 2014-04-01 11:08:15 在网上看到又内核如何创建进程的代码,主要流程是
1,使用 ZwOpenFile 打开文件,创建映射 ZwCreateSection.
2. 调用 ZwCreateProcess
本步骤主要是创建进程的 PEB 、 EPROCESS 、 VAD 等核心内核结构。
3. 创建堆栈、 CONTEXT 、进程参数等,并创建主线程 ZwCreateThread(SUSPEND)
4. 通知 Csrss.exe
5. 调用 ZwResumeThread 恢复线程的执行。
现在问题在 通知 Csrss.exe,因为网上那份代码是NATIVE APP,使用CsrClientCallServer 来通知CSRSS的,这个API在NTDLL中,是R3下才有的,现在移植到R0下无法使用,网上有一个通过直接通过获取CSRSS中EPROCESS的OBJECTTABLE句柄,使用ExEnumHandleTable 来处理,最后直接NtRequestWaitReplyPort完成通知,可是在最后程序运行后还是初始化失败,特在此发一帖,寻求解答~