⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 calldriver.cpp

📁 KPDrv驱动加载器
💻 CPP
字号:

#include <windows.h>
#include <winioctl.h>
#include <stdio.h>
#include "Driver.h"
#include "CallDriver.h"

	typedef struct 
	{
		long EPAddrToKill;
		long ExitStatus;
		long PID;
		long BYKILLBYPEP;
		long sysmajorVer;
		long sysminorVer;
		long sysSPVer;
	}KPDRV_IN,*PKPDRV_IN;
	
#define IOCTL_KPDRV_KILLPROCESS	\
CTL_CODE(FILE_DEVICE_UNKNOWN, 0x830, METHOD_BUFFERED, FILE_ANY_ACCESS)
int main(int argc, char* argv[])
{
printf("\nKillProcess by at_Least[0GiNr]\n\
											  http://atLeast.blog.cfan.com.cn\n\
http://0ginr.com\n\n");
char szPath[256];
char* p;
printf("正在尝试装载驱动...\n");
::GetFullPathName("KPDrv.sys", 256, szPath, &p);
printf("驱动路径: %s.\n",szPath);
CDriver my(szPath, "KPDrvLN");

//system("pause");

if(my.StartDriver())
{
	printf("装载成功.\n");
	printf("正在尝试打开驱动...\n");
	
	if(my.IsValid())
		if(my.OpenDevice())
		{
			printf("打开成功.\n\n");
			KPDRV_IN datain;
			long bypid;
			printf("请输入1来通过PID结束进程,或输入其他数字来通过EPROCESS地址结束进程:");
			scanf("%d",&bypid);
			if (bypid==1)
			{
				printf("请输入进程PID:");
				scanf("%d",&datain.PID);
			}
			else
			{
				printf("请输入EPROCESS地址(16进制): 0x");
				scanf("%x",&datain.EPAddrToKill);
			}

			printf("\n");
			datain.ExitStatus=0;
			datain.sysmajorVer=5; // 这些版本是假定的,驱动可以支持 XP SP0,SP1,SP2
			datain.sysminorVer=1;
			datain.sysSPVer=2; //这个决定系统SP号。本来都是应该在驱动中判断的 但是偶比较菜 :~
			datain.BYKILLBYPEP=(bypid!=1);
			long retv;
			long ret;
			ret=my.IoControl(IOCTL_KPDRV_KILLPROCESS,
				&datain,
				sizeof(datain),
				&retv,sizeof(retv));
			printf("返回值(0为成功):0x%X\n",retv);
		}
		else
			printf("Open Error.\n");
}
else
printf("Load Error\n.");

printf("\n按任意键退出.\n");
getchar();
return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -