在新的 Windows 操作系统中,线程和线程系统的变化

逆向工程 艾达 登录 线 过程
2021-06-26 03:38:17

我查找了像CreateProcessCreateThreadefrom等函数的源代码kernel32例如,CreateThread@kernel32进入kernelbase.dll并以对 的调用结束NtCreateThreadEx

CsrClientCallServer在该函数中看不到任何调用,只有很少的检查和调用RtlActivateActivationContextEx我想知道这些调用是否是进程运行所必需的

我查了一下,ntdll没有带名字的函数CsrClientCallServer然而,有一些函数,比如NtConnectPort等等,可以使用LPC机制。

我假设它CsrClientCallServer是建立在诸如 之类的函数之上NtConnectPortNtReplyPort并带有一些特定参数。我的问题是:是否有必要从用户模式通知 csrss 关于创建的线程?

对于现有进程的线程,我不清楚 wininternals 和其他书籍是否应该这样做。我尝试NtCreateThread在 win10 上使用 old 创建线程并且它工作正常,没有通过 LPC 发出任何通知但是例如相同的代码可以在 xp 上工作吗?

1个回答

不。没有必要创建与CSRSS服务的连接以使进程运行。CSRSS服务器提供不需要的大部分过程,因此一些功能可以,除非它在任何原因,具体过程requried被忽略。

自 NT4 以来,主要功能CSRSS仍然主要是 Windows 控制台 GUI 和 Windows 提供给 GUI 应用程序的其他 GUI 相关服务。如果您的进程不需要这些服务,它可以默默地忽略CSRSS.

虽然我独立知道它,但这也在维基百科中说明

客户端/服务器运行时子系统或 csrss.exe 是 Windows NT 操作系统家族的一个组件,它提供 Win32 子系统的用户模式端,并包含在 Windows NT 4 和更高版本中。因为在 Windows NT 4 及更高版本中,大多数 Win32 子系统操作已移至内核模式驱动程序,CSRSS 主要负责 Win32 控制台处理和 GUI 关闭。

Additonally,有一个体面的(参见第38页) 文档 CSRSS 在线