精易论坛
标题: 驱动级结束进程 [打印本页]
作者: sna1 时间: 2018-1-26 19:49
标题: 驱动级结束进程
本帖最后由 sna1 于 2018-1-26 19:52 编辑
可以结束一些任务管理器无法结束的进程 比如 火绒的 HipsDaemon.exe
可以看到 这里已经结束掉了
.sys文件已签名,是一个吊销签名,如不可以吧把计算机时间改到2013-05-20到2014-05-20之间即可
驱动是x64的
下面是demo的代码
- #include <stdio.h>
- #include <Windows.h>
- #include "ScmDrvCtrl.h"
- #pragma comment(lib,"user32.lib")
- void GetAppPath(char *szCurFile) //最后带斜杠
- {
- GetModuleFileNameA(0,szCurFile,MAX_PATH);
- for(SIZE_T i=strlen(szCurFile)-1;i>=0;i--)
- {
- if(szCurFile[i]=='\\')
- {
- szCurFile[i+1]='\0';
- break;
- }
- }
- }
- int main()
- {
- BOOL b;
- cDrvCtrl dc;
- char szSysFile[MAX_PATH]={0};
- char szSvcLnkName[]="KillPid";;
- GetAppPath(szSysFile);
- strcat(szSysFile,"KillPid.sys");
- //安装并启动驱动
- printf("加载驱动\n");
- b=dc.Install(szSysFile,szSvcLnkName,szSvcLnkName);
- b=dc.Start();
- if (b == 1)
- printf("加载驱动成功\n");
- else
- printf("加载驱动失败\n");
- //“打开”驱动的符号链接
- dc.Open("\\\\.\\KillPid");
- DWORD x,y;
- printf("输入进程pid:");
- scanf_s("%lu",&x);
- dc.IoControl(0x802, &x, sizeof(x), &y, sizeof(y),0);
- printf("Pid:%d已结束\n",y);
- //关闭符号链接句柄
- printf("完成,关闭符号链接句柄\n");
- CloseHandle(dc.m_hDriver);
- //停止并卸载驱动
- printf("卸载驱动\n");
- b=dc.Stop();
- b=dc.Remove();
- if (b == 1)
- printf("卸载驱动成功\n");
- else
- printf("卸载驱动失败\n");
- system("pause");
- return 0;
- }
复制代码以及类
- /*============================
- Drvier Control Class (SCM way)
- ============================*/
- #pragma comment(lib,"advapi32.lib")
- class cDrvCtrl
- {
- public:
- cDrvCtrl()
- {
- m_pSysPath = NULL;
- m_pServiceName = NULL;
- m_pDisplayName = NULL;
- m_hSCManager = NULL;
- m_hService = NULL;
- m_hDriver = INVALID_HANDLE_VALUE;
- }
- ~cDrvCtrl()
- {
- CloseServiceHandle(m_hService);
- CloseServiceHandle(m_hSCManager);
- CloseHandle(m_hDriver);
- }
- public:
- DWORD m_dwLastError;
- PCHAR m_pSysPath;
- PCHAR m_pServiceName;
- PCHAR m_pDisplayName;
- HANDLE m_hDriver;
- SC_HANDLE m_hSCManager;
- SC_HANDLE m_hService;
- public:
- BOOL Install(PCHAR pSysPath,PCHAR pServiceName,PCHAR pDisplayName);
- BOOL Start();
- BOOL Stop();
- BOOL Remove();
- BOOL Open(PCHAR pLinkName);
- BOOL IoControl(DWORD dwIoCode, PVOID InBuff, DWORD InBuffLen, PVOID OutBuff, DWORD OutBuffLen, DWORD *RealRetBytes);
- private:
- BOOL GetSvcHandle(PCHAR pServiceName);
- DWORD CTL_CODE_GEN(DWORD lngFunction);
- protected:
- //null
- };
- BOOL cDrvCtrl::GetSvcHandle(PCHAR pServiceName)
- {
- m_pServiceName = pServiceName;
- m_hSCManager = OpenSCManagerA(NULL,NULL,SC_MANAGER_ALL_ACCESS);
- if (NULL == m_hSCManager)
- {
- m_dwLastError = GetLastError();
- return FALSE;
- }
- m_hService = OpenServiceA(m_hSCManager,m_pServiceName,SERVICE_ALL_ACCESS);
- if (NULL == m_hService)
- {
- CloseServiceHandle(m_hSCManager);
- return FALSE;
- }
- else
- {
- return TRUE;
- }
- }
- BOOL cDrvCtrl::Install(PCHAR pSysPath,PCHAR pServiceName,PCHAR pDisplayName)
- {
- m_pSysPath = pSysPath;
- m_pServiceName = pServiceName;
- m_pDisplayName = pDisplayName;
- m_hSCManager = OpenSCManagerA(NULL,NULL,SC_MANAGER_ALL_ACCESS);
- if (NULL == m_hSCManager)
- {
- m_dwLastError = GetLastError();
- return FALSE;
- }
- m_hService = CreateServiceA(m_hSCManager,m_pServiceName,m_pDisplayName,
- SERVICE_ALL_ACCESS,SERVICE_KERNEL_DRIVER,SERVICE_DEMAND_START,SERVICE_ERROR_NORMAL,
- m_pSysPath,NULL,NULL,NULL,NULL,NULL);
- if (NULL == m_hService)
- {
- m_dwLastError = GetLastError();
- if (ERROR_SERVICE_EXISTS == m_dwLastError)
- {
- m_hService = OpenServiceA(m_hSCManager,m_pServiceName,SERVICE_ALL_ACCESS);
- if (NULL == m_hService)
- {
- CloseServiceHandle(m_hSCManager);
- return FALSE;
- }
- }
- else
- {
- CloseServiceHandle(m_hSCManager);
- return FALSE;
- }
- }
- return TRUE;
- }
- BOOL cDrvCtrl::Start()
- {
- if (!StartServiceA(m_hService,NULL,NULL))
- {
- m_dwLastError = GetLastError();
- return FALSE;
- }
- return TRUE;
- }
- BOOL cDrvCtrl::Stop()
- {
- SERVICE_STATUS ss;
- GetSvcHandle(m_pServiceName);
- if (!ControlService(m_hService,SERVICE_CONTROL_STOP,&ss))
- {
- m_dwLastError = GetLastError();
- return FALSE;
- }
- return TRUE;
- }
- BOOL cDrvCtrl::Remove()
- {
- GetSvcHandle(m_pServiceName);
- if (!DeleteService(m_hService))
- {
- m_dwLastError = GetLastError();
- return FALSE;
- }
- return TRUE;
- }
- BOOL cDrvCtrl::Open(PCHAR pLinkName)//example: \\\\.\\xxoo
- {
- if (m_hDriver != INVALID_HANDLE_VALUE)
- return TRUE;
- m_hDriver = CreateFileA(pLinkName, GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
- if(m_hDriver != INVALID_HANDLE_VALUE)
- return TRUE;
- else
- return FALSE;
- }
- BOOL cDrvCtrl::IoControl(DWORD dwIoCode, PVOID InBuff, DWORD InBuffLen, PVOID OutBuff, DWORD OutBuffLen, DWORD *RealRetBytes)
- {
- DWORD dw;
- BOOL b=DeviceIoControl(m_hDriver,CTL_CODE_GEN(dwIoCode),InBuff,InBuffLen,OutBuff,OutBuffLen,&dw,NULL);
- if(RealRetBytes)
- *RealRetBytes=dw;
- return b;
- }
- DWORD cDrvCtrl::CTL_CODE_GEN(DWORD lngFunction)
- {
- return (FILE_DEVICE_UNKNOWN * 65536) | (FILE_ANY_ACCESS * 16384) | (lngFunction * 4) | METHOD_BUFFERED;
- }
复制代码驱动部分的核心代码(结束进程)
- void ZwKillProcess(int pid)
- {
- HANDLE hProcess = NULL;
- CLIENT_ID ClientId;
- OBJECT_ATTRIBUTES oa;
- //填充 CID
- ClientId.UniqueProcess = (HANDLE)pid;
- ClientId.UniqueThread = 0;
- //填充 OA
- oa.Length = sizeof(oa);
- oa.RootDirectory = 0;
- oa.ObjectName = 0;
- oa.Attributes = 0;
- oa.SecurityDescriptor = 0;
- oa.SecurityQualityOfService = 0;
- //打开进程,如果句柄有效,则结束进程
- ZwOpenProcess(&hProcess, 1, &oa, &ClientId);
- if (hProcess)
- {
- ZwTerminateProcess(hProcess, 0);
- ZwClose(hProcess);
- };
- }
复制代码可能写的有些乱,不喜勿喷,可以x掉;
下面是源代码以及成品
exe 源码
驱动源码
作者: Canada 时间: 2018-1-26 21:22
怒草火绒
作者: sna1 时间: 2018-1-26 21:29
试了下 大数字也可以,不过结束之后一段时间会自动的 重启进程,可以结束之后 删掉他的 文件,ZhuDongFangYu.exe也可以结束掉
作者: 网络注册会员 时间: 2018-1-27 08:29
高人哦顶你
作者: kai4246 时间: 2018-1-27 11:36



作者: 3170337582 时间: 2018-1-27 11:43
谢谢分享.....。。。
作者: 4312204 时间: 2018-1-27 16:34
学习一下, 
作者: 4312204 时间: 2018-1-27 16:35
学习一下,
作者: 白小纯纯纯纯 时间: 2018-1-27 17:19
学习一下啊
作者: ck66 时间: 2018-1-27 18:10
大神,你厉害了,感觉写驱动级的都是好高端啊
作者: 老王哦 时间: 2018-1-27 19:03
看 看 看不懂。。
作者: xxhaishixx 时间: 2018-1-27 23:30
可以搞驱动级的,了不起
作者: weihua2018 时间: 2018-1-29 07:10
这么丑还驱动级了哦
作者: 电视费 时间: 2018-1-30 17:44
打开直接电脑重启求解
作者: 哦啦啦 时间: 2018-1-31 11:25
直接重启,-6666精币
作者: 8554308 时间: 2018-2-2 12:44
学习了啊啊和啊
作者: 8554308 时间: 2018-2-3 09:50
%25%44%31%25%41%37%25%43%46%25%42%30%25%43%31%25%43%42%25%42%30%25%41%31%25%42%30%25%41%31%25%42%41%25%43%37%25%42%41%25%43%37
作者: 笨点 时间: 2018-2-8 14:58
好高端的样子 就是看不懂
作者: sna1 时间: 2018-2-8 22:31
下载cpp 自己重新编译试一下...
作者: 电视费 时间: 2018-2-9 21:00
什么叫cpp。。z
作者: YKQOOO 时间: 2019-3-27 14:22
感谢感谢分享
作者: ysn2382617094ws 时间: 2019-4-6 23:15
666666666666666666666666
作者: ysn2382617094ws 时间: 2019-4-6 23:15
666666666666666666666666666666666
作者: ysn2382617094ws 时间: 2019-4-6 23:16
6666666666666666666666666666666666666
作者: 2161045897 时间: 2019-4-7 07:46
感谢分享~~~
作者: 2161045897 时间: 2019-4-7 07:48
感谢分享~~
作者: 2161045897 时间: 2019-4-7 07:50
感谢分享~~
作者: k2014 时间: 2019-7-4 22:32
O(∩_∩)O哈哈~
作者: liuduan123 时间: 2019-7-5 11:54
66666666666666666666666666666666666666
作者: w8610128 时间: 2021-5-22 14:58
66666666666666666666666666666666666666
作者: 撒加 时间: 2021-5-22 15:02
我擦 电脑冒烟了
作者: 我是床奇 时间: 2021-12-7 06:08
蓝屏666666
作者: Suky 时间: 2021-12-7 06:42
所以说 这到底是不是安全可用的? 好像是就发这么一个帖 人就没了?
作者: Dream丿夏天 时间: 2022-3-26 23:41
感谢分享,很给力
作者: 2027 时间: 2022-4-23 00:29
支持一下
作者: 淑女不说艹 时间: 2022-12-4 02:54
支持啊 好东西
作者: glr9107 时间: 2023-10-26 18:06
感谢分享
作者: yangjz 时间: 2023-11-25 00:37
的娃啊娃娃法国
欢迎光临 精易论坛 (https://125.confly.eu.org/) |
Powered by Discuz! X3.4 |