在游戏外挂和反外挂的对抗中
驱动有其重要的作用
但是随着Windows 系统的升级 很多东西出现了局限性,不过我们还是需要了解学习一下
如果下是一个最简单的64驱动
//环境设置:
//属性页->C / C+±>警告等级 : 等级3 / W3
//属性页->C / C+±>将警告视为错误 : 否 / WX -
//属性页->Inf2Cat->Run Inf2Cat : 否
//属性页->Driver Settings->Target Os Version : 设置版本 Windows 7 Windows 10任选
//属性页->Driver Settings->Target PlatForm : Desktop
//属性页->StampInf->Endable ArchiteCture : 否
//KdPrint类似于 控制台的printf
//DriverEntry类似于 C / C++里的main
#include
void DriverEntry(void) //main
{
KdPrint((“yjx:进入了我们的驱动 \n”)); //printf
}
同样我们可以做一个简单的64驱动框架
以后使用
//环境设置:
//属性页->C / C+±>警告等级 : 等级3 / W3
//属性页->C / C+±>将警告视为错误 : 否 / WX -
//属性页->Inf2Cat->Run Inf2Cat : 否
//属性页->Driver Settings->Target Os Version : 设置版本 Windows 7 Windows 10任选
//属性页->Driver Settings->Target PlatForm : Desktop
//属性页->StampInf->Endable ArchiteCture : 否
//KdPrint类似于 控制台的printf
//DriverEntry类似于 C / C++里的main
#include
#pragma code_seg(“PAGE”)
//创建驱动设备对象
NTSTATUS CreateDevice(PDRIVER_OBJECT driver)
{
NTSTATUS status;
UNICODE_STRING MyDriver;
PDEVICE_OBJECT device;
RtlInitUnicodeString(&MyDriver, L"\DEVICE\MyDriver");
status = IoCreateDevice(driver, sizeof(driver->DriverExtension), &MyDriver, FILE_DEVICE_UNKNOWN, FILE_DEVICE_SECURE_OPEN, FALSE, &device);
if (status == STATUS_SUCCESS)
{
KdPrint((“yjx:驱动设备对象创建成功,OK \n”));
}
else
{
KdPrint((“yjx:驱动设备对象创建失败,删除设备\n”));
IoDeleteDevice(device);
}
return status;
}
void UnLoad(PDRIVER_OBJECT driver)
{
IoDeleteDevice(driver->DeviceObject); //删除设备对象,如果此处不删除 卸载不干净 再次用IoCreateDevice创建同名驱动 会蓝屏
KdPrint((“yjx:驱动卸载成功\n”));
}
#pragma code_seg(“INIT”)
NTSTATUS DriverEntry(PDRIVER_OBJECT driver, PUNICODE_STRING szReg)
{
KdPrint((“yjx:进入驱动入口函数 %wZ\n”, szReg)); //%wZ用于格式化 UNICODE_STRING字符串
NTSTATUS st = CreateDevice(driver);//为driver创建设备对象
driver->DriverUnload = UnLoad;//注册卸载例程
return st;
}