码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2019-10-22 12:57:34      阅读:106      评论:0      收藏:0      [点我收藏+]

标签:boot   关机   不可   ast   read   reboot   shu   oca   mys   

强制重启计算机。在内核里直接使用 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);
}

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

标签:boot   关机   不可   ast   read   reboot   shu   oca   mys   

原文地址:https://www.cnblogs.com/csnd/p/11718985.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!