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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

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

007-R3应用层卸载驱动代码

[复制链接]
发表于 2018-11-29 20:32:46 | 显示全部楼层 |阅读模式
//郁金香灬老师
//QQ 150330575

//开发环境:VS2017
//驱动运行平台:x64 Win7 win8 win10


驱动卸载过程
1、用OpenSCManager打开服务控制管理器
2、用OpenService打开服务
3、ControlService停止服务
4、用DeleteService删除服务 //从服务控制管理器数据库中删除注册信息
5、清理工作,用CloseServiceHandle关闭释放句柄


//卸载驱动程序
BOOL UnloadDriver(const  char * szSvrName)
{
        BOOL bRet = FALSE;
        SC_HANDLE hServiceMgr = NULL;//SCM管理器的句柄
        SC_HANDLE hServiceDDK = NULL;//NT驱动程序的服务句柄
        SERVICE_STATUS SvrSta;
        //打开SCM管理器
        hServiceMgr = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
        if (hServiceMgr == NULL)
        {
                //带开SCM管理器失败
                DbgPrintA("OpenSCManager() Faild %d ! \n", GetLastError());
                bRet = FALSE;
                goto BeforeLeave;
        }
        else
        {
                //带开SCM管理器失败成功
                DbgPrintA("OpenSCManager() ok ! \n");
        }
        //打开驱动所对应的服务
        hServiceDDK = OpenServiceA(hServiceMgr, szSvrName, SERVICE_ALL_ACCESS);

        if (hServiceDDK == NULL)
        {
                //打开驱动所对应的服务失败
                DbgPrintA("OpenService() Faild %d ! \n", GetLastError());
                bRet = FALSE;
                goto BeforeLeave;
        }
        else
        {
                DbgPrintA("OpenService() ok ! \n");
        }
        //停止驱动程序,如果停止失败,只有重新启动才能,再动态加载。  
        if (!ControlService(hServiceDDK, SERVICE_CONTROL_STOP, &SvrSta))
        {
                DbgPrintA("ControlService() Faild %d !\n", GetLastError());
        }
        else
        {
                //打开驱动所对应的失败
                DbgPrintA("ControlService() ok !\n");
        }
        //动态卸载驱动程序。  
        if (!DeleteService(hServiceDDK))
        {
                //卸载失败
                DbgPrintA("DeleteSrevice() Faild %d !\n", GetLastError());
        }
        else
        {
                //卸载成功
                DbgPrintA("DelServer:deleteSrevice() ok !\n");
        }
        bRet = TRUE;
BeforeLeave:
        //离开前关闭打开的句柄
        if (hServiceDDK)
        {
                CloseServiceHandle(hServiceDDK);
        }
        if (hServiceMgr)
        {
                CloseServiceHandle(hServiceMgr);
        }
        return bRet;
}

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

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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