首页
社区
课程
招聘
[原创]Win10和Win7驱动蓝屏兼容问题
发表于: 2020-10-15 00:15 2701

[原创]Win10和Win7驱动蓝屏兼容问题

2020-10-15 00:15
2701

今天突发奇想,在虚拟机中搭建了一个win7 x64的虚拟机,使用了vs2019+wdk10编译了一个简单的驱动demo来测试环境,没想到驱动一加载就蓝屏。

 

通过windbg调试栈回溯,发现原来是在调用DriverEntry前,gs_driverentry函数中初始化security_init_cookie判断cookie magic值导致。

1
2
3
4
5
6
7
8
RetAddr           : Call Site
fffff880`030ba015 : bytekitsdrv!__security_init_cookie+0x2d
fffff800`042ae467 : bytekitsdrv!GsDriverEntry+0x15 [minkernel\tools\gs_support\kmodefastfail\gs_driverentry.c @ 46]
fffff800`042ae865 : nt!EtwWriteStartScenario+0x2267
fffff800`03ed3a21 : nt!EtwWriteStartScenario+0x2665
fffff800`04166cce : nt!KeAcquireInStackQueuedSpinLockAtDpcLevel+0x2f1
fffff800`03ebafe6 : nt!PsCreateSystemThread+0x1da
00000000`00000000 : nt!KeInitializeSemaphore+0x24a

security_init_cookie函数的逆向代码如下:

1
2
3
4
5
6
7
8
9
10
kd> u  bytekitsdrv!__security_init_cookie l15
bytekitsdrv!__security_init_cookie [minkernel\tools\gs_support\kmodefastfail\gs_support.c @ 37]:
fffff880`030ba02c 488b05cddfffff  mov     rax,qword ptr [bytekitsdrv!__security_cookie (fffff880`030b8000)]
fffff880`030ba033 4885c0          test    rax,rax
fffff880`030ba036 741a            je      bytekitsdrv!__security_init_cookie+0x26 (fffff880`030ba052)
fffff880`030ba038 48b932a2df2d992b0000 mov rcx,2B992DDFA232h
fffff880`030ba042 483bc1          cmp     rax,rcx
fffff880`030ba045 740b            je      bytekitsdrv!__security_init_cookie+0x26 (fffff880`030ba052)
fffff880`030ba047 48f7d0          not     rax
fffff880`030ba04a 488905b7dfffff  mov     qword ptr [bytekitsdrv!__security_cookie_complement (fffff880`030b8008)],rax

详细的分析过程,可见https://www.bytekits.com/wdm/windrv-win10-win7-driver-compatible-blue-screen.html查看。


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

最后于 2020-10-15 00:20 被tsingchen编辑 ,原因:
收藏
免费 1
支持
分享
最新回复 (4)
雪    币: 341
活跃值: (1005)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
感谢,正好解决了我昨天的疑问:驱动程序怎么像exe文件一样可以在各版本系统上运行?添加配置之后可以了。
2020-10-15 09:39
0
雪    币: 30
活跃值: (772)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
fatcateatrat 感谢,正好解决了我昨天的疑问:驱动程序怎么像exe文件一样可以在各版本系统上运行?添加配置之后可以了。
客气
2020-10-15 12:58
0
雪    币: 248
活跃值: (3789)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
vs2019编写驱动不是可以改目标平台和操作系统版本么?
2020-10-16 12:48
0
雪    币: 6124
活跃值: (4661)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
5
没懂 项目设置里面选择目标平台win7,也会报错?
2020-10-16 13:13
0
游客
登录 | 注册 方可回帖
返回
//