Windows驱动笔记
+ -

InitSafeBootMode使用规则

2024-09-11 0 0

Microsoft Windows 操作系统内核导出名为 InitSafeBootMode 的指针。 InitSafeBootMode 指向包含当前有效的安全模式设置的 ULONG 变量。 设备驱动程序可以检查这些设置,以确定操作系统是否在安全模式下运行。
InitSafeBootMode 变量对应的模式。

  • 0:操作系统未处于安全模式。
  • 1:SAFEBOOT_MINIMAL
  • 2:SAFEBOOT_NETWORK
  • 3:SAFEBOOT_DSREPAIR 注意:仅适用于 Windows 域控制器。

若要使用 InitSafeBootMode 变量,必须在驱动程序中声明它,如以下代码示例所示:

extern PULONG InitSafeBootMode;

//声明 InitSafeBootMode 后,可以使用以下代码示例来确定操作系统是否在安全模式下运行
if (*InitSafeBootMode > 0) 
{
    // The operating system is in Safe Mode.
    // Take appropriate action.
    //
}

若要防止驱动程序在安全模式下运行,请使用以下列表中与驱动程序类型匹配的技术:

1。功能驱动程序:如果功能驱动程序的服务启动类型为 SERVICE_BOOT_START,请在功能驱动程序的 AddDevice 例程中检查 InitSafeBootMode 的值。 如果系统处于安全模式,则返回失败状态。注意 切勿从 DriverEntry 例程返回失败。

这里只是建议上的规则,但是实际上很多第三方的所谓的保护驱动都是在DriverEntry中判断的。

NTSTATUS __stdcall DriverEntry(PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPath)
{
  NTSTATUS status = 0xC0000001;
  if ( InitSafeBootMode )
    return 0xC0000001;
    ...
}

2。 Filter驱动程序:如果Filter驱动程序在系统启动期间启动,请在Filter驱动程序的 AddDevice 例程中检查 InitSafeBootMode 的值。 如果操作系统处于安全模式,请执行以下操作:

不要将Filter设备对象附加到设备堆栈。
从Filter驱动程序的 AddDevice 例程返回成功。

3。 其他驱动程序:对于除功能或Filter驱动程序以外的驱动程序,在驱动程序的 DriverEntry 例程中检查 InitSafeBootMode 的值。 如果操作系统处于安全模式,则返回失败状态。

0 篇笔记 写笔记

InitSafeBootMode使用规则
Microsoft Windows 操作系统内核导出名为 InitSafeBootMode 的指针。 InitSafeBootMode 指向包含当前有效的安全模式设置的 ULONG 变量。 设备驱动程序可以检查这些设置,以确定操作系统是否在安全模式下运行。InitSafeBootMode 变量对应的......
作者信息
我爱内核
Windows驱动开发,网站开发
好好学习,天天向上。
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!