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.pswp.cn/diannao/95262.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/95262.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity TimeLine使用教程

1.概述 Timeline 是一个基于时间轴的序列化编辑工具&#xff0c;主要用于控制游戏或动画中的 过场动画&#xff08;Cutscenes&#xff09;、剧情事件、角色动画混合、音频控制 等。它类似于视频编辑软件&#xff08;如 Adobe Premiere&#xff09;的时间线&#xff0c;但专门针…

数据分析基本内容(第二十节课内容总结)

1.pd.read_csv(一个文件.csv)&#xff1a;从本地文件加载数据&#xff0c;返回一个 DataFrame 对象&#xff0c;这是 pandas 中用于存储表格数据的主要数据结构2.df.head()&#xff1a;查看数据的前五行&#xff0c;帮助快速了解数据的基本结构和内容3.df.info()&#xff1a;查…

2025年最新原创多目标算法:多目标酶作用优化算法(MOEAO)求解MaF1-MaF15及工程应用---盘式制动器设计,提供完整MATLAB代码

一、酶作用优化算法 酶作用优化&#xff08;Enzyme Action Optimizer, EAO&#xff09;算法是一种2025年提出的新型仿生优化算法&#xff0c;灵感源于生物系统中酶的催化机制&#xff0c;发表于JCR 2区期刊《The Journal of Supercomputing》。其核心思想是模拟酶与底物的特异性…

用 COLMAP GUI 在 Windows 下一步步完成 相机位姿估计(SfM) 和 稀疏点云重建的详细步骤:

使用 COLMAP GUI 进行 SfM 和稀疏点云重建的步骤1. 打开 COLMAP GUI运行 colmap.bat&#xff0c;会弹出图形界面。2. 新建项目&#xff08;或打开已有项目&#xff09;点击菜单栏的 File > New Project&#xff0c;选择一个空文件夹作为项目目录&#xff08;建议新建一个空目…

天线设计 介质材料PEC和FR4有什么区别吗

在电磁仿真&#xff08;包括 CST 中&#xff09;&#xff0c;PEC 和 FR4 是两种完全不同的材料类型&#xff0c;主要区别如下&#xff1a;材料性质&#xff1a;PEC&#xff08;Perfect Electric Conductor&#xff0c;理想电导体&#xff09;&#xff1a;是一种理论上的理想材料…

mysql锁+索引

mysql锁按锁的粒度分类表级锁&#xff08;Table - level locks&#xff09;特点&#xff1a;对整张表进行锁定&#xff0c;实现简单&#xff0c;加锁和释放锁的速度快&#xff0c;但并发度较低。当一个事务对表加表级锁后&#xff0c;其他事务对该表的读写操作都可能被阻塞。应…

计算机视觉CS231n学习(7)

可视化和理解 这里主要是对CNN中间的层的结果可视化滤波器可视化 直接可视化网络各层的滤波器权重&#xff0c;高层滤波器的可视化结果趣味性较低&#xff0c;而底层滤波器通常对应边缘、纹理等基础视觉特征 &#xff08;“高层滤波器” 通常指的是网络中靠后的卷积层所包含的滤…

OpenBMC中工厂模式的简明工作流程解析

本文将以最简单直接的方式&#xff0c;从零开始讲解OpenBMC中工厂模式的完整工作流程&#xff0c;包括从设计到使用的全生命周期。 1. 工厂模式最简示例 我们先从一个最基础的工厂模式实现开始&#xff1a; // 产品接口 class GpioPin { public:virtual void setValue(bool val…

解决:Error updating changes: detected dubious ownership in repository at

在通过 Git Bash 提交项目代码时输入 git add . 命令后&#xff0c;报错&#xff1a;Error updating changes: detected dubious ownership in repository at ...这是因为 该项目的所有者 与 现在的用户 不一致 比如说&#xff1a; 该项目的所有者是 Administrator&#xff0c;…

DataEase V2 社区版安装部署

参考&#xff1a;使用外置 MySQL 部署 DataEase v2 - FIT2CLOUD 知识库 一、下载安装包 开源社区 - FIT2CLOUD 飞致云 选择社区版下载 下载后上传到 linux 的目录 &#xff08;要求至少200G&#xff09; 二、在MySQL8中创建数据库 # 创建DataEase库 CREATE DATABASE datae…

nginx高性能web服务器

web服务基础介绍 一、Web服务核心流程 #mermaid-svg-NCj4hbRIvvgMXmcK {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-NCj4hbRIvvgMXmcK .error-icon{fill:#552222;}#mermaid-svg-NCj4hbRIvvgMXmcK .error-text{fil…

_init__.py的作用

目录 场景1:没有 `__init__.py` 的情况 场景2:有 `__init__.py` 并导入模块 场景3:用 `__all__` 定义"推荐工具" 注意:工具箱内部的工具互相调用 情况1:在 `__init__.py` 中导入模块 情况2:在 `__init__.py` 中直接导入模块里的功能 关键原则 在 Python 中,__…

浏览器面试题及详细答案 88道(12-22)

《前后端面试题》专栏集合了前后端各个知识模块的面试题&#xff0c;包括html&#xff0c;javascript&#xff0c;css&#xff0c;vue&#xff0c;react&#xff0c;java&#xff0c;Openlayers&#xff0c;leaflet&#xff0c;cesium&#xff0c;mapboxGL&#xff0c;threejs&…

开发避坑指南(23):Tomcat高版本URL特殊字符限制问题解决方案(RFC 7230 RFC 3986)

异常信息 java.lang.IllegalArgumentException: 在请求目标中找到无效字符[/order/show?orderType01&orderTitle0xe50x8f0xa30xe50xb20xb80xe50x8a0xa80xe60x800x81&pageNum1 ]。有效字符在RFC 7230和RFC 3986中定义org.apache.coyote.http11.Http11InputBuffer.parse…

HTTPS的应用层协议

HTTPS的应用层协议 方案 5 - 非对称加密 对称加密 证书认证 在客户端和服务器刚一建⽴连接的时候, 服务器给客户端返回一个 证书&#xff0c;证书包含了之前服务端的公钥, 也包含了网站的身份信息. 客户端进行认证 当客户端获取到这个证书之后, 会对证书进行校验(防止证书是伪…

【SpringBoot】05 容器功能 - SpringBoot底层注解的应用与实战 - @Configuration + @Bean

文章目录前言一、创建两个组件二、使用传统方式源代码解释三、使用SpringBoot方法源代码解释四、查看是否添加到组件中查看自定义组件名配置类在容器中注册的是单实例组件配置类本身也是容器中的一个组件Configuration的proxyBeanMethods属性&#xff1a;代理bean的方法proxyBe…

c#联合Halcon进行OCR字符识别(含halcon-25.05 百度网盘)

1.下载安装halcon 通过网盘分享的文件&#xff1a;halcon-25.05.0.0-x64-win64 链接: https://pan.baidu.com/s/1XAx-8ZQM-ZHkgHIc-dhCYw 提取码: whek 2.c#环境配置 创建test_halcon_ocr项目 找到halcon的安装路径 我的&#xff1a; D:\halcon\HALCON-25.05-Progress\bin\x64…

丝杆支撑座怎样助力升降设备实现智能化?

丝杆支撑座作为传动系统中的关键支撑部件&#xff0c;凭借其高刚性、抗冲击及精准定位能力&#xff0c;广泛应用于重型机械与升降设备领域&#xff0c;为设备提供稳定可靠的轴向承载与径向支撑&#xff0c;确保高负荷工况下的安全运行。电梯 / 升降平台&#xff1a;液压电梯的辅…

Notta:高效智能的音频转文字工具

本文转载自&#xff1a;Notta&#xff1a;高效智能的音频转文字工具 - Hello123 ** 一、产品简介 Notta 是一款基于 AI 语音识别引擎的语音转文字工具&#xff0c;支持 58 种语言的转录和 42 种语言的翻译。用户可通过实时录音或上传音频 / 视频文件&#xff08;如 MP3、WAV …

Docker私有仓库创建及Docky存储与网络配置(小白的“升级打怪”成长之路)

目录 一、Docker私有仓库创建 1、在一台安装Docker私有仓库的主机上添加docker-compose 命令 2、安装docker-ce服务 3、Docker 镜像加速 4、安装Harbor仓库 5、使用脚本安装仓库 6、网站登陆 7、客户端使用Harbor仓库 二、Docky存储与网络配置 1、存储与网络 挂载主机…