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

推荐订阅源

阮一峰的网络日志
阮一峰的网络日志
D
Darknet – Hacking Tools, Hacker News & Cyber Security
S
Schneier on Security
The Last Watchdog
The Last Watchdog
Cyberwarzone
Cyberwarzone
S
Securelist
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
C
Cyber Attacks, Cyber Crime and Cyber Security
L
Lohrmann on Cybersecurity
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 司徒正美
The Cloudflare Blog
V
V2EX
博客园_首页
博客园 - 聂微东
Vercel News
Vercel News
人人都是产品经理
人人都是产品经理
G
GRAHAM CLULEY
T
Tenable Blog
Last Week in AI
Last Week in AI
Y
Y Combinator Blog
L
LINUX DO - 最新话题
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
SecWiki News
SecWiki News
博客园 - 三生石上(FineUI控件)
S
Secure Thoughts
N
News | PayPal Newsroom
T
The Blog of Author Tim Ferriss
The GitHub Blog
The GitHub Blog
T
Troy Hunt's Blog
博客园 - 【当耐特】
Forbes - Security
Forbes - Security
H
Hacker News: Front Page
A
About on SuperTechFans
B
Blog RSS Feed
Engineering at Meta
Engineering at Meta
MongoDB | Blog
MongoDB | Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
罗磊的独立博客
D
DataBreaches.Net
P
Privacy & Cybersecurity Law Blog
Schneier on Security
Schneier on Security
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Google DeepMind News
Google DeepMind News
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Jina AI
Jina AI
D
Docker
P
Proofpoint News Feed

博客园 - 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

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