zoukankan      html  css  js  c++  java
  • 强制重启N种方法

    强制重启N种方法

    本文章已收录于:
     
    分类:

    1.

    无意中看到一种通过控制92H端口bit0位,将其置1来实现重启的方法,刚才测试了一下,效果真好

        mov al, 01
        out 92h, al

    2.

    另一种,模拟键盘的reset

         mov al, 0xfe
         out 0x64, al



    i8042 :键盘控制器 
    8042的端口在cpu的io空间地址如下: 

    port----Read/Write-----Function 
    0x60----Read----------Read Input Buffer 
    0x60----Write---------Write Output Buffer 
    0x64----Read----------Read Status Register 
    0x64----Write---------Send Command 

    再者

    3.

       status=ZwInitiatePowerAction(PowerActionShutdown, 
         PowerSystemShutdown, 
         0, 
         TRUE 
        );

    再者

    4.

    HalReturnToFirmware(HalRebootRoutine);

    驱动中直接使用由Hal.dll导出的HalReturnToFirmware函数来实现关机,这是系统正常关机时调用的最后一个API,也是最实效的一个API,这个函数会直接调用Bois例程,然后系统就真的关机了


    再者

    5.
    KeBugCheck(POWER_FAILURE_SIMULATE);

    也许你会认为这是BugCheck,那么你错了,这并不会引发bugcheck

    这样实际上会调用了HalReturnToFirmware(HalRebootMachine)

    当执行了BugCheck回调后,无BSOD,无Crash dump,只会进行非常干净、简单和直接的重启动

     实现源码为

    /* Check if this is power failure simulation */
        if (BugCheckCode == POWER_FAILURE_SIMULATE)
        {
            /* Call the Callbacks and reboot */;
            KiDoBugCheckCallbacks();
            HalReturnToFirmware(HalRebootRoutine);
        }
  • 相关阅读:
    what's the python之if判断、while循环以及for循环
    what's the python之基本运算符及字符串、列表、元祖、集合、字典的内置方法
    what's the python之变量、基本数据类型
    what's the python之python介绍
    计算机基础系列之网络基础——网络协议
    计算机基础系列之何为操作系统
    计算机基础系列之计算机硬件
    EXT3_DX_ADD_ENTRY: DIRECTORY INDEX FULL!
    无shell情况下的mysql远程mof提权利用方法详解
    /bin/rm: Argument list too long解決方法
  • 原文地址:https://www.cnblogs.com/ansen312/p/5865264.html
Copyright © 2011-2022 走看看