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

nt!MmCreatePeb函数分析之peb中OSMajorVersion的由来

第一部分:

NTSTATUS
MmCreatePeb (
IN PEPROCESS TargetProcess,
IN PINITIAL_PEB InitialPeb,
OUT PPEB *Base
)
{
PPEB PebBase;

        PebBase->OSMajorVersion = NtMajorVersion;
PebBase->OSMinorVersion = NtMinorVersion;
PebBase->OSBuildNumber = (USHORT)(NtBuildNumber & 0x3FFF);
PebBase->OSPlatformId = 2;      // VER_PLATFORM_WIN32_NT from winbase.h
PebBase->OSCSDVersion = (USHORT)CmNtCSDVersion;


第二部分:

0: kd> kc

nt!MmCreatePeb
nt!PspCreateProcess
nt!NtCreateProcessEx
nt!_KiSystemService
SharedUserData!SystemCallStub
ntdll!ZwCreateProcessEx
kernel32!CreateProcessInternalW
kernel32!CreateProcessW
cmd!ExecPgm
cmd!ECWork
cmd!ExtCom
cmd!FindFixAndRun
cmd!Dispatch
cmd!main
cmd!mainCRTStartup
kernel32!BaseProcessStart
0: kd> kv
ChildEBP RetAddr  Args to Child              
ba10eb74 80d3a7da 892f72d0 ba10ec80 892f7460 nt!MmCreatePeb (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\ntos\mm\procsup.c @ 6255]
ba10ecd8 80d3af36 0012fa74 001f0fff 00000000 nt!PspCreateProcess+0x61a (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\ntos\ps\create.c @ 1623]
ba10ed2c 80afbcb2 0012fa74 001f0fff 00000000 nt!NtCreateProcessEx+0xae (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\ntos\ps\create.c @ 955]
ba10ed2c 7ffe0304 0012fa74 001f0fff 00000000 nt!_KiSystemService+0x13f (FPO: [0,3] TrapFrame @ ba10ed64) (CONV: cdecl) [d:\srv03rtm\base\ntos\ke\i386\trap.asm @ 1328]
0012f0c0 77f2ed58 77e61163 0012fa74 001f0fff SharedUserData!SystemCallStub+0x4 (FPO: [0,0,0])
0012f0c4 77e61163 0012fa74 001f0fff 00000000 ntdll!ZwCreateProcessEx+0xc (FPO: [9,0,0]) [d:\srv03rtm\base\ntdll\daytona\obj\i386\usrstubs.asm @ 523]
0012fa9c 77e61e74 00000000 00144d20 001466c0 kernel32!CreateProcessInternalW+0x11c8 (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\win32\client\process.c @ 3573]
0012fad4 4ad0c5de 00144d20 001466c0 00000000 kernel32!CreateProcessW+0x2a (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\win32\client\process.c @ 4637]
0012fc20 4ad0d1fa 00146630 001450a8 00000000 cmd!ExecPgm+0x200 (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\cmd\cext.c @ 480]
0012fc54 4ad0d302 00146630 00000000 00000000 cmd!ECWork+0x6a (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\cmd\cext.c @ 204]
0012fc6c 4ad124b1 00146630 00000001 00146630 cmd!ExtCom+0x3a (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\cmd\cext.c @ 87]
0012fe98 4ad12dff 00146630 00000001 00000002 cmd!FindFixAndRun+0x111 (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\cmd\cmd.c @ 1345]
0012fee0 4ad130cc 00000000 00000001 00000000 cmd!Dispatch+0x1a7 (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\cmd\cmd.c @ 683]
0012ff44 4ad21754 00000001 00363cf8 00362f68 cmd!main+0x280 (FPO: [Non-Fpo]) (CONV: cdecl) [d:\srv03rtm\base\cmd\cmd.c @ 431]
0012ffc0 77e62c34 00000000 00000000 7ffdf000 cmd!mainCRTStartup+0x12f (FPO: [Non-Fpo]) (CONV: cdecl) [d:\srv03rtm\base\crts\crtw32\dllstuff\crtexe.c @ 501]
0012fff0 00000000 4ad21625 00000000 78746341 kernel32!BaseProcessStart+0x23 (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\win32\client\support.c @ 580]

0: kd> x nt!NtMajorVersion
80a040ac nt!NtMajorVersion = 5

第三部分:

./base/ntos/init/init.c:137:const ULONG NtMajorVersion = VER_PRODUCTMAJORVERSION;

./base/ntos/init/init.c

#include "ntos.h"
#include "ntimage.h"
#include <zwapi.h>
#include <ntdddisk.h>
#include <kddll.h>
#include <setupblk.h>
#include <fsrtl.h>
#include <ntverp.h>        //#include <ntverp.h>

const ULONG NtMajorVersion = VER_PRODUCTMAJORVERSION;
const ULONG NtMinorVersion = VER_PRODUCTMINORVERSION;

#if DBG
ULONG NtBuildNumber = VER_PRODUCTBUILD | 0xC0000000;
#else
ULONG NtBuildNumber = VER_PRODUCTBUILD | 0xF0000000;
#endif

http://www.dtcms.com/a/328535.html

相关文章:

  • Flutter ExpansionPanel组件(可收缩的列表)
  • 【入门系列】图像算法工程师如何入门计算机图形学?
  • 数据分析基本内容(第二十节课内容总结)
  • MCU外设初始化:为什么参数配置必须优先于使能
  • redis的过期策略和定时器
  • 支持任意 MCP 协议的客户端
  • SQL180 每类试卷得分前3名
  • Mybatis源码解读-Plugin插件源码
  • (C++)继承全解析及运用
  • Labelme从安装到标注:零基础完整指南
  • MySQL基础面试
  • Springboot整合Thrift
  • 移动端网页调试实战,键盘弹出与视口错位问题的定位与优化
  • 汉高携手SAP推出AI驱动的退换货与争议管理解决方案
  • 赛灵思ZYNQ官方文档UG585自学翻译笔记:UART Controller,通用异步收发传输器控制器
  • Vue接口平台十三——测试记录
  • Ubuntu 全盘备份
  • 九尾狐未来机械晶核技术
  • k3s部署
  • 电脑硬件详解
  • ZYNQ AXI-GPIO学习——ZYNQ学习笔记8
  • 学习游制作记录(背包UI以及各种物品的存储)8.12
  • kafka 消费者组的概念是什么?它是如何实现消息的点对点和发布/订阅模式?
  • Supabase快速入门与实战指南
  • LangChain 入门学习
  • Spring AI Alibaba - 聊天机器人快速上手
  • SpringAI 使用通义千问进行聊天对话开发
  • 考研复习-计算机组成原理-第五章-CPU
  • [NoC]Outstanding和Credit的概念详解
  • Fluent Bit 日志合并正则表达式(上)