当前位置: 首页 > news >正文

smss源代码分析之smss!SmpLoadSubSystemsForMuSession函数分析加载csrss.exe

第一部分:

    Next = SmpSubSystemsToLoad.Flink;
    while ( Next != &SmpSubSystemsToLoad ) {
        p = CONTAINING_RECORD( Next,
                               SMP_REGISTRY_VALUE,
                               Entry
                             );
#if SMP_SHOW_REGISTRY_DATA
        DbgPrint( "SMSS: Loaded SubSystem( %wZ = %wZ )\n", &p->Name, &p->Value );
#endif
        if (!_wcsicmp( p->Name.Buffer, L"debug" )) {
            Status = SmpExecuteCommand( &p->Value, *pMuSessionId, pWindowsSubSysProcessId, SMP_SUBSYSTEM_FLAG | SMP_DEBUG_FLAG );
        }
        else {
            Status = SmpExecuteCommand( &p->Value, *pMuSessionId, pWindowsSubSysProcessId, SMP_SUBSYSTEM_FLAG );
        }


第二部分:
0: kd> dt _SMP_REGISTRY_VALUE 00163fd0
smss!_SMP_REGISTRY_VALUE
   +0x000 Entry            : _LIST_ENTRY [ 0x164168 - 0x4858f618 ]
   +0x008 Name             : _UNICODE_STRING "Debug"
   +0x010 Value            : _UNICODE_STRING ""
   +0x018 AnsiValue        : 0x00164018  ""


0: kd> x smss!SmpSubSystemsToLoad
4858f618          smss!SmpSubSystemsToLoad = struct _LIST_ENTRY [ 0x163fd0 - 0x164168 ]
0: kd> dx -r1 (*((smss!_LIST_ENTRY *)0x4858f618))
(*((smss!_LIST_ENTRY *)0x4858f618))                 [Type: _LIST_ENTRY]
    [+0x000] Flink            : 0x163fd0 [Type: _LIST_ENTRY *]
    [+0x004] Blink            : 0x164168 [Type: _LIST_ENTRY *]
0: kd> dx -r1 ((smss!_LIST_ENTRY *)0x163fd0)
((smss!_LIST_ENTRY *)0x163fd0)                 : 0x163fd0 [Type: _LIST_ENTRY *]
    [+0x000] Flink            : 0x164168 [Type: _LIST_ENTRY *]
    [+0x004] Blink            : 0x4858f618 [Type: _LIST_ENTRY *]

0: kd> dt _SMP_REGISTRY_VALUE 0x164168
smss!_SMP_REGISTRY_VALUE
   +0x000 Entry            : _LIST_ENTRY [ 0x4858f618 - 0x163fd0 ]
   +0x008 Name             : _UNICODE_STRING "Windows"
   +0x010 Value            : _UNICODE_STRING "C:\WINDOWS\system32\csrss.exe ObjectDirectory=\Windows SharedSection=1024,3072,512 Windows=On SubSystemType=Windows ServerDll=basesrv,1 ServerDll=winsrv:UserServerDllInitialization,3 ServerDll=winsrv:ConServerDllInitialization,2 ProfileControl=Off MaxRequestThreads=16"
   +0x018 AnsiValue        : 0x001641a0  "C:\WINDOWS\system32\csrss.exe ObjectDirectory=\Windows SharedSection=1024,3072,512 Windows=On SubSystemType=Windows ServerDll=basesrv,1 ServerDll=winsrv:UserServerDllInitialization,3 ServerDll=winsrv:ConServerDllInitialization,2 ProfileControl=Off MaxRequestThreads=16"


0: kd> x smss!SmpSubSystemsToLoad
4858f618          smss!SmpSubSystemsToLoad = struct _LIST_ENTRY [ 0x163fd0 - 0x164168 ]

        if (!_wcsicmp( p->Name.Buffer, L"debug" )) {
            Status = SmpExecuteCommand( &p->Value, *pMuSessionId, pWindowsSubSysProcessId, SMP_SUBSYSTEM_FLAG | SMP_DEBUG_FLAG );
        }

第三部分:

0: kd> t
Breakpoint 3 hit
smss!SmpExecuteCommand:
001b:4858a860 55              push    ebp
0: kd> kc
 #
00 smss!SmpExecuteCommand
01 smss!SmpLoadSubSystemsForMuSession
02 smss!SmpLoadDataFromRegistry
03 smss!SmpInit
04 smss!main
05 smss!NtProcessStartup
0: kd> dv
            CommandLine = 0x00163fe0 ""
            MuSessionId = 0
pWindowsSubSysProcessId = 0x4858f614
                  Flags = 9
          ImageFileName = ""
       CurrentDirectory = 394 ''
              Arguments = 3266

    if (Flags & SMP_DEBUG_FLAG) {
        return( STATUS_SUCCESS );
    }

第四部分:


0: kd> t
Breakpoint 3 hit
smss!SmpExecuteCommand:
001b:4858a860 55              push    ebp
0: kd> kc
 #
00 smss!SmpExecuteCommand
01 smss!SmpLoadSubSystemsForMuSession
02 smss!SmpLoadDataFromRegistry
03 smss!SmpInit
04 smss!main
05 smss!NtProcessStartup
0: kd> dv
            CommandLine = 0x00164178 "C:\WINDOWS\system32\csrss.exe ObjectDirectory=\Windows SharedSection=1024,3072,512 Windows=On SubSystemType=Windows ServerDll=basesrv,1 ServerDll=winsrv:UserServerDllInitialization,3 ServerDll=winsrv:ConServerDllInitialization,2 ProfileControl=Off MaxRequestThreads=16"
            MuSessionId = 0
pWindowsSubSysProcessId = 0x4858f614
                  Flags = 8
          ImageFileName = ""
       CurrentDirectory = 394 ''
              Arguments = 3266

相关文章:

  • yolov5 本地训练
  • Gradio全解20——Streaming:流式传输的多媒体应用(3)——实时语音识别技术
  • HBM的哪些事
  • 当LLM遇上Agent:AI三大流派的“复仇者联盟”
  • Linux操作系统系统编程:x86-64架构下的系统调用
  • Nature子刊:大脑如何灵活处理多元数字信息
  • Laravel 12 实现 API 登录令牌认证
  • 博弈论思维——AI与思维模型【90】
  • 书生实战营之沐曦专场
  • OceanBase租户扩缩容的三种方法
  • 2505C++,wmi客户端示例
  • 微软发布了最新的开源推理模型套件“Phi-4-Reasoning
  • C++ 项目中的多语言字符串管理方案(支持自动提示与动态加载)
  • 逻辑回归的多分类实战:以鸢尾花数据集为例
  • 【源码+文档+调试讲解】儿童图书推荐系统81
  • 论文笔记(八十三)STACKGEN: Generating Stable Structures from Silhouettes via Diffusion
  • C++负载均衡远程调用学习之QPS性能测试
  • 个人健康中枢的多元化AI软件革新与精准健康路径探析
  • 同城跑腿小程序帮取帮送接单抢单预约取件智能派单同城配送全开源运营版源码优创
  • 2000-2022年上市公司数字经济专利申请数据
  • 香港发生车祸致22人受伤,4人伤势严重
  • 国际著名学者Charles M. Lieber全职受聘清华深圳国际研究生院
  • 李强签署国务院令,公布修订后的《中华人民共和国植物新品种保护条例》
  • 全国人大常委会关于授权国务院在中国(新疆)自由贸易试验区暂时调整适用《中华人民共和国种子法》有关规定的决定
  • 中央网信办:重点整治违规AI产品、利用AI制作发布谣言等突出问题
  • 4月人民币对美元即期汇率微跌,今年以来升值0.48%