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

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

2020-10-15 00:15
3001

今天突发奇想,在虚拟机中搭建了一个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

详细的分析过程,可见723K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2T1P5i4c8W2K9$3W2@1M7#2)9J5k6h3y4G2L8g2)9J5c8Y4N6V1L8g2)9J5c8Y4N6A6L8X3c8J5N6W2)9J5k6s2N6A6L8U0p5H3i4K6u0V1N6$3W2F1y4#2)9J5k6r3c8J5K9i4k6W2M7W2)9J5k6r3y4G2L8i4m8S2N6r3W2T1L8r3g2Q4x3X3c8T1L8s2g2W2i4K6u0V1M7$3y4J5k6h3g2F1i4K6u0W2K9s2c8E0L8l9`.`.查看。


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2020-10-15 00:20 被tsingchen编辑 ,原因:
收藏
免费 1
支持
分享
最新回复 (4)
雪    币: 341
活跃值: (1020)
能力值: ( 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
雪    币: 6129
活跃值: (4971)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
5
没懂 项目设置里面选择目标平台win7,也会报错?
2020-10-16 13:13
0
游客
登录 | 注册 方可回帖
返回