惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 叶小钗
云风的 BLOG
云风的 BLOG
G
Google Developers Blog
S
SegmentFault 最新的问题
罗磊的独立博客
Hugging Face - Blog
Hugging Face - Blog
美团技术团队
爱范儿
爱范儿
博客园 - 三生石上(FineUI控件)
H
Hackread – Cybersecurity News, Data Breaches, AI and More
D
DataBreaches.Net
F
Fortinet All Blogs
TaoSecurity Blog
TaoSecurity Blog
D
Docker
C
Cybersecurity and Infrastructure Security Agency CISA
K
Kaspersky official blog
宝玉的分享
宝玉的分享
腾讯CDC
Google Online Security Blog
Google Online Security Blog
Recorded Future
Recorded Future
T
The Exploit Database - CXSecurity.com
T
The Blog of Author Tim Ferriss
V
V2EX
S
Securelist
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
C
CERT Recently Published Vulnerability Notes
A
Arctic Wolf
Scott Helme
Scott Helme
L
LINUX DO - 热门话题
Y
Y Combinator Blog
P
Proofpoint News Feed
T
Tor Project blog
AWS News Blog
AWS News Blog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
The Last Watchdog
The Last Watchdog
博客园 - 聂微东
T
Threat Research - Cisco Blogs
B
Blog
Attack and Defense Labs
Attack and Defense Labs
L
Lohrmann on Cybersecurity
C
CXSECURITY Database RSS Feed - CXSecurity.com
阮一峰的网络日志
阮一峰的网络日志
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
IT之家
IT之家
N
News and Events Feed by Topic
博客园 - 司徒正美
H
Help Net Security
C
Cisco Blogs
C
Check Point Blog
S
Secure Thoughts

博客园 - talenth

windows下简单使用webrtc nvm配置nodejs ATL开发office插件 windows编译pp-shitu webdriver windows下不同cpu架构PE文件区别 vs中/EHa、/EHs、/EHsc的区别 主窗口,子窗口,拥有窗口关闭消息顺序 windows下注册一个打开特定扩展名的文件 yara规则学习 usb3.0+mvme固态安装win7 提取shell32.dll中的字符串 常见编码 修理鼠标微动开关 InfinityHook原理 段描述符 tls1.3报文 签名证书 windows内核同步机制
驱动程序获取内核版本号
talenth · 2022-09-08 · via 博客园 - talenth

原创文章, 转载必须保留出处!!

内核获取版本号一般都是调用 RtlGetVersion

(1) <win10(20h1):  无论啥时候调用返回的BuildNum都是固定,

(2) >= win10(20h1):  如果驱动是start= 1的方式启动的, 那么在启动时, 跟系统完全启动后再读取到的版本号可能是不一致的, 因为从这个版本开始系统对这个build number的实现方式发生了改变

以下仅粗略讨论变化之处

系统内核用一个全局变量表示这个build number -->NtBuildNumber, RtlGetVersion返回的就是这个全局变量的值. 

最开始有一个初始值, 然后一个内核函数从注册表一个位置读取了build number, 把NtBuildNumber的现有值给覆盖了,

然后再把所有版本号相关的所有值写入HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion下面

win10 跟win11读取的注册表的位置略有不同, 读取的函数也略有区别

系统 内核函数 读取的注册表位置
win10 CmpSetVersionData HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\EditionVersion
win11 CmpLoadSystemVersionData HKEY_LOCAL_MACHINE\SYSTEM\Software\Microsoft\BUILDLAYERS

不太清楚微软为什么这么搞, 成天在这瞎折腾