郁金香外挂技术-郁金香灬老师

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

飞郁网络培训郁金香终身VIP管理员QQ150330575淘宝担保交易QQ交流群(外挂,驱动)
查看: 337|回复: 0

003-给驱动设备绑定一个符号链接

[复制链接]
发表于 2018-11-29 20:31:40 | 显示全部楼层 |阅读模式
//郁金香灬老师
//QQ 150330575
//开发环境:VS2017
//时间:2019-10-1

//环境设置:
//属性页->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<ntifs.h>

#pragma code_seg("PAGE")
//创建驱动设备对象
NTSTATUS CreateDevice(PDRIVER_OBJECT driver)
{
        NTSTATUS status;
        UNICODE_STRING uzDriverName;
        PDEVICE_OBJECT device;
        RtlInitUnicodeString(&uzDriverName, L"\\DEVICE\\uzDriverName001");
        //创建驱动设备
        status = IoCreateDevice(driver, sizeof(driver->DriverExtension), &uzDriverName, FILE_DEVICE_UNKNOWN, FILE_DEVICE_SECURE_OPEN, FALSE, &device);


        if (status == STATUS_SUCCESS)
        {
                KdPrint(("yjx:驱动设备对象 %wZ 创建成功,OK -----------\n", &uzDriverName));
                //为设备对象绑定一个符号链接
                UNICODE_STRING uzSymbolName; //符号链接名字                 
                RtlInitUnicodeString(&uzSymbolName, L"\\??\\uzDriverName001"); //CreateFile
                status = IoCreateSymbolicLink(&uzSymbolName, &uzDriverName);
                if (status==STATUS_SUCCESS)
                {
                        KdPrint(("yjx:创建符号链接 %wZ 成功 ", &uzSymbolName));
                }
                else
                {
                        KdPrint(("yjx:创建符号链接 %wZ 失败 ", &uzSymbolName));
                }
        }
        else
        {

                KdPrint(("yjx:驱动设备对象 %wZ 创建失败,准备删除Device -----------\n", &uzDriverName));
                IoDeleteDevice(device);
        }
        return status;
}
//驱动卸载例程
void UnLoad(PDRIVER_OBJECT driver)
{
        NTSTATUS status = 0;
        IoDeleteDevice(driver->DeviceObject); //删除设备对象,如果此处不删除 卸载不干净 再次用IoCreateDevice创建同名驱动 会蓝屏
        //删除符号链接
        UNICODE_STRING uzSymbolName; //符号链接名字
        RtlInitUnicodeString(&uzSymbolName, L"\\??\\uzDriverName001");
        status=IoDeleteSymbolicLink(&uzSymbolName);
        if (!status) //if(status == STATUS_SUCCESS)
        {
                KdPrint(("yjx:删除符号链接 %wZ 成功 ",&uzSymbolName));
        }
        else
        {
                KdPrint(("yjx:删除符号链接 %wZ 失败 ", &uzSymbolName));
        }
        KdPrint(("yjx:驱动卸载成功\n"));
}

NTSTATUS DriverEntry(PDRIVER_OBJECT driver,PVOID szReg) //main
{
        KdPrint(("yjx:进入了我们的驱动 \n")); //printf
        driver->DriverUnload = UnLoad;
        NTSTATUS status=CreateDevice(driver);//创建了设备对象

        return STATUS_SUCCESS;
}



郁金香外挂教程,学习中...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|郁金香外挂技术-郁金香灬老师 ( 苏ICP备10059359号 )

GMT+8, 2018-12-19 09:03 , Processed in 0.043195 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表