查看: 3853|回复: 45

[原创软件分享] 我的驱动完成了

[复制链接]

4

技术

17

魅力

6

原创

版主

禁止发言

Rank: 7Rank: 7Rank: 7

积分
5367
人气
208
分享
36

最佳新人活跃会员

发表于 2022-5-8 14:25:00 | 显示全部楼层 |阅读模式
如题,最近在学驱动开发,写了一个强制结束进程的驱动,发出来给大家看看,只支持64位系统

下载链接:https://pan.huang1111.cn/s/23RNIN
使用方法:使用DeviceIoControl发送一个值为0x800的控制码与要结束进程的pid
使用示例:
[C++] 纯文本查看 复制代码
#include <stdio.h>
#include <tchar.h>
#include <windows.h>
#include <winioctl.h>
#include <iostream>
using namespace std;

#define IOCTL_KILL CTL_CODE(FILE_DEVICE_UNKNOWN, 0x800, METHOD_BUFFERED, FILE_ANY_ACCESS)

// 主函数
int main()
{
HANDLE hDevice = CreateFile(L"\\\\.\\MTKill", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (hDevice == INVALID_HANDLE_VALUE)
{
printf("Failed To Obtain Device Handle!");
return -1;
}

DWORD len = 0;
UCHAR buffer[20];
memset(buffer, 0x00, 20);

long pid = 0;

printf("Process ID : ");
cin >> pid;

BOOL status = DeviceIoControl(hDevice, IOCTL_KILL, &pid, 4, buffer, 20, &len, NULL);

return 0;
}

两个杀进程函数发出来给大家看看,低技术力,见笑了
[C++] 纯文本查看 复制代码
BOOLEAN KillProcess(LONG pid)
{
        HANDLE ProcessHandle;
        NTSTATUS status;
        OBJECT_ATTRIBUTES ObjectAttributes;
        CLIENT_ID Cid;

        // 初始化ObjectAttributes和Cid
        HalQuerySystemInformation()
        InitializeObjectAttributes(&ObjectAttributes, 0, 0, 0, 0);
        Cid.UniqueProcess = (HANDLE)pid;
        Cid.UniqueThread = 0;
        // 打开进程句柄
        status = ZwOpenProcess(&ProcessHandle, PROCESS_ALL_ACCESS, &ObjectAttributes, &Cid);
        if (NT_SUCCESS(status))
        {
                DbgPrint("Open Process %d Successful!\n", pid);
                // 结束进程
                ZwTerminateProcess(ProcessHandle, status);
               
                // 关闭句柄
                ZwClose(ProcessHandle);
                return TRUE;
        }
        DbgPrint("Open Process %d Failed!\n", pid);
        return FALSE;
}

[C++] 纯文本查看 复制代码
BOOLEAN ZeroKill(ULONG PID)   //X32  X64
{
        NTSTATUS ntStatus = STATUS_SUCCESS;
        int i = 0;
        PVOID handle;
        PEPROCESS Eprocess;
        ntStatus = PsLookupProcessByProcessId(PID, &Eprocess);
        if (NT_SUCCESS(ntStatus))
        {
                PKAPC_STATE pKs = (PKAPC_STATE)ExAllocatePool(NonPagedPool, sizeof(PKAPC_STATE));
                KeStackAttachProcess(Eprocess, pKs);//Attach进程虚拟空间
                for (i = 0; i <= 0x7fffffff; i += 0x1000)
                {
                        if (MmIsAddressValid((PVOID)i))
                        {
                                _try
                                {
                                   ProbeForWrite((PVOID)i,0x1000,sizeof(ULONG));
                                   memset((PVOID)i,0xcc,0x1000);
                                }_except(1) { continue; }
                        }
                        else {
                                if (i > 0x1000000)  //填这么多足够破坏进程数据了  
                                        break;
                        }
                }
                KeUnstackDetachProcess(pKs);
                if (ObOpenObjectByPointer((PVOID)Eprocess, 0, NULL, 0, NULL, KernelMode, &handle) != STATUS_SUCCESS)
                        return FALSE;
                ZwTerminateProcess((HANDLE)handle, STATUS_SUCCESS);
                ZwClose((HANDLE)handle);
                return TRUE;
        }
        return FALSE;
}

END


评分

参与人数 3经验 +50 人气 +5 分享 +3 收起 理由
hackerbob + 20 + 2 + 2 赞一个!
xiaomeng + 30
Andy + 3 + 1 赞一个!

查看全部评分

YF工作室驻x64论坛分部
工作室曾开发的软件:YFSafe安全软件,YFChat在线聊天软件,MBRTools等。
欢迎有能力的你加入我们一起共同进步。请发邮件至yfstudio2021@outlook.com

0

技术

7

魅力

0

原创

版主

Rank: 7Rank: 7Rank: 7

积分
5100
人气
135
分享
5
发表于 2022-5-8 15:38:15 | 显示全部楼层
没编译出来?

能杀火绒吗
Manners maketh man

4

技术

17

魅力

6

原创

版主

禁止发言

Rank: 7Rank: 7Rank: 7

积分
5367
人气
208
分享
36

最佳新人活跃会员

 楼主| 发表于 2022-5-8 16:33:00 | 显示全部楼层
xiaomeng 发表于 2022-5-8 15:38
没编译出来?

能杀火绒吗

编译出来了啊,项目不是一个驱动文件吗?
我在自己的机器上试验过了,能杀火绒的全部进程。
YF工作室驻x64论坛分部
工作室曾开发的软件:YFSafe安全软件,YFChat在线聊天软件,MBRTools等。
欢迎有能力的你加入我们一起共同进步。请发邮件至yfstudio2021@outlook.com

2

技术

6

魅力

2

原创

病毒研究组

Rank: 8Rank: 8

积分
1721
人气
179
分享
17

最佳新人活跃会员

发表于 2022-5-8 17:01:13 | 显示全部楼层
第一个我看懂了,是调用系统进程相关api直接关闭进程
第二个是往进程内存空间里写数据,导致溢出吗?

2

技术

6

魅力

2

原创

病毒研究组

Rank: 8Rank: 8

积分
1721
人气
179
分享
17

最佳新人活跃会员

发表于 2022-5-8 17:02:54 | 显示全部楼层
xiaomeng 发表于 2022-5-8 15:38
没编译出来?

能杀火绒吗

驱动一旦被加载,就和杀软是同级权限,当然能关闭呀

4

技术

17

魅力

6

原创

版主

禁止发言

Rank: 7Rank: 7Rank: 7

积分
5367
人气
208
分享
36

最佳新人活跃会员

 楼主| 发表于 2022-5-8 17:42:17 | 显示全部楼层
hackerbob 发表于 2022-5-8 17:01
第一个我看懂了,是调用系统进程相关api直接关闭进程
第二个是往进程内存空间里写数据,导致溢出吗? ...

内存填0破坏进程
YF工作室驻x64论坛分部
工作室曾开发的软件:YFSafe安全软件,YFChat在线聊天软件,MBRTools等。
欢迎有能力的你加入我们一起共同进步。请发邮件至yfstudio2021@outlook.com

0

技术

7

魅力

0

原创

版主

Rank: 7Rank: 7Rank: 7

积分
5100
人气
135
分享
5
发表于 2022-5-8 18:07:51 | 显示全部楼层
YFSafe 发表于 2022-5-8 17:42
内存填0破坏进程

火绒:太难了
Manners maketh man

0

技术

7

魅力

0

原创

版主

Rank: 7Rank: 7Rank: 7

积分
5100
人气
135
分享
5
发表于 2022-5-8 18:08:16 | 显示全部楼层
hackerbob 发表于 2022-5-8 17:02
驱动一旦被加载,就和杀软是同级权限,当然能关闭呀

r0层?
Manners maketh man

2

技术

6

魅力

2

原创

病毒研究组

Rank: 8Rank: 8

积分
1721
人气
179
分享
17

最佳新人活跃会员

发表于 2022-5-8 18:29:15 | 显示全部楼层

确实哈,内核权限级别有r0~r3

0

技术

7

魅力

0

原创

版主

Rank: 7Rank: 7Rank: 7

积分
5100
人气
135
分享
5
发表于 2022-5-8 18:31:05 | 显示全部楼层
hackerbob 发表于 2022-5-8 18:29
确实哈,内核权限级别有r0~r3

平时不咋研究这方面,以后你也发发
Manners maketh man
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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