世事洞明皆学问,人情练达即文章。这篇文章主要讲述驱动实现强制重启与关机操作相关的知识,希望能为你提供帮助。
【驱动实现强制重启与关机操作】强制重启计算机。在内核里直接使用 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);
推荐阅读
- Android系统自带的android.util.Base64的实现源码
- Java中的线程
- Java中的结构语句
- Java中的接口
- ADB调试工具的使用
- SQL Server 结果转JSON存储过程
- JavaScript 自动获取所有a标签,并新标签打开
- Linux777权限是啥
- JavaScript 获取当前周数