发布于:2018-10-3 12:55 | 112158次阅读 作者: 外部投稿 | 原作者: 通化程序员
在游戏外挂和反外挂的对抗中 驱动有其重要的作用 但是随着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; }
来源:通化程序员—投稿 GSLAB网站投稿文章仅代表作者本人的观点,与本网站立场无关。 *转载请注明来自游戏安全实验室(GSLAB.QQ.COM) |
最新评论
发表评论