驱动实现强制重启与关机操作

Posted mb62d3c286f15ed

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了驱动实现强制重启与关机操作相关的知识,希望对你有一定的参考价值。

强制重启计算机。在内核里直接使用 OUT 指令就能强制重启计算机而不可能被任何钩子拦截。此代码可以用在反调试里。

VOID ForceReboot()

typedef void (__fastcall *FCRB)(void);
/*
mov al, 0FEh
out 64h, al
ret
*/
FCRB fcrb=NULL;
UCHAR shellcode[6]="\\xB0\\xFE\\xE6\\x64\\xC3";
fcrb=ExAllocatePool(NonPagedPool,5);
memcpy(fcrb,shellcode,5);
fcrb();

强制关闭计算机。在内核里直接使用 OUT 指令就能强制关闭计算机而不可能被任何钩子拦截。此代码可以用在反调试里。

VOID ForceShutdown()

typedef void (__fastcall *FCRB)(void);
/*
mov ax,2001h
mov dx,1004h
out dx,ax
ret
*/
FCRB fcrb=NULL;
UCHAR shellcode[12]="\\x66\\xB8\\x01\\x20\\x66\\xBA\\x04\\x10\\x66\\xEF\\xC3";
fcrb=ExAllocatePool(NonPagedPool,11);
memcpy(fcrb,shellcode,11);
fcrb();

等待。这个等于 RING3 的 Sleep 函数了。

#define DELAY_ONE_MICROSECOND (-10)
#define DELAY_ONE_MILLISECOND (DELAY_ONE_MICROSECOND*1000)
VOID MySleep(LONG msec)

LARGE_INTEGER my_interval;
my_interval.QuadPart = DELAY_ONE_MILLISECOND;
my_interval.QuadPart *= msec;
KeDelayExecutionThread(KernelMode,0,&my_interval);



以上是关于驱动实现强制重启与关机操作的主要内容,如果未能解决你的问题,请参考以下文章

编程实现Windows关机重启注销

系统关机重启注销详解

thinkpad无法关机 黑屏 强制也关不上

联想笔记本w500.显卡故障问题

linux必须拔电源才能重启

ubuntu安装成功后,点现在重启卡在那了,然后强制关机,再重启,打开ubuntu启动不了