VS编译驱动的targetPlatform选项

在完成测试驱动的编写后,F7生成,然后拿到虚拟机进行调试,发现每次载入WinDbg就会给出一段很莫名的报错

RtlpBreakWithStatusInstruction
security_init_cookie

以下是编写&测试环境

编写环境:vs community 2015 + SDK 10.0.15063.137 + WDK 10.0.15063.0
测试环境:Windows7 x86-64 Pro
Driver Loader:OsrLoader

最开始发现cookie错误,因为之前做缓冲区溢出的时候,知道vs会默认开启了/GS选项来进行溢出检查,但是禁用了GS选项后,依然继续报错security_init_cookie,这就很奇怪了。
一路Google,在stackoverflow上找到了一个和我遇见类似问题的人发出的提问__security_init_cookie in Windows driver causes bugcheck KERNEL_SECURITY_CHECK_FAILURE,在第二个答案找到原因,竟然是没有设定Driver平台……一脸懵逼
立刻回去在项目属性-Driver Setting-Gernel中修改平台,再次编译,加载Driver,通过~

但是还是有件事不清楚,为什么指定平台后就没有了security_init_cookie 的报错,是Windows在Win7之后新加入了什么特性吗?第一个答案指出了一点

If your driver targets Windows 8 (and newer) it expects that OS will initialize the cookie. Therefore it raises BSOD if cookie wasn’t changed.
On the other hand if your driver targets older OS (Windows 7), compiler has to generate code that initializes cookie if it wasn’t already initialized by OS. This way the driver is compatible with all Windows versions.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值