| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
PS:不要在意函数名啊变量名这些细节,←_←英语高考只有37的人体谅下 
- #include<stdio.h>
 
 - #include<windows.h>
 
 - #include<tlhelp32.h>
 
 - #include<string.h>
 
  
- void csh_all();//初始化所有
 
 - void csh_tq(int * i);//提权相关过程
 
 - void print_star();//输出最开始显示的内
 
 - void print_jclb();//输出当前进程列表
 
 - void zx_zzjc_jcm();//执行终止进程_进程名过程
 
 - void zx_zzjc_jcid();//执行终止进程_进程ID过程
 
 - void cls();//情况缓冲区
 
 - int tq_debug();//提权到debug
 
 - int qjcID(char*jcm);//取进程ID(英文很烂见谅)
 
 - int KillProcess_jcid(int jcid);//终止进程_进程ID
 
 - int KillProcess_jcm(char*jcm);//终止进程_进程名
 
 - HANDLE dkjc(char*jcm);//打开进程
 
  
- char ch;
 
  
- int main()
 
 - {
 
 -         csh_all();
 
 -         return 0;
 
 - }
 
  
- void csh_all()
 
 - {
 
 -         int t = 0;
 
 -         csh_tq(&t);
 
 -         if (t)
 
 -         {
 
 -                 while (1)
 
 -                 {
 
 -                         print_star();
 
 -                         ch = getchar();
 
 -                         switch (ch)
 
 -                         {
 
 -                         case '0':
 
 -                                 if ((ch = getchar()) != '\n')//解决01退出BUG
 
 -                                 {
 
 -                                         goto cs;
 
 -                                 }
 
 -                                 return 0;
 
 -                         case '1':
 
 -                                 if ((ch = getchar()) != '\n')
 
 -                                 {
 
 -                                         goto cs;
 
 -                                 }
 
 -                                 print_jclb();
 
 -                                 break;
 
 -                         case'2':
 
 -                                 if ((ch = getchar()) != '\n')
 
 -                                 {
 
 -                                         goto cs;
 
 -                                 }
 
 -                                 printf("请选择方式(1:进程名 其他:进程ID):");
 
 -                                 ch = getchar();
 
 -                                 if (ch != '1')
 
 -                                 {
 
 -                                         zx_zzjc_jcid();
 
 -                                 }
 
 -                                 else
 
 -                                 {
 
 -                                         if ((ch = getchar()) != '\n')
 
 -                                         {
 
 -                                                 cls();
 
 -                                                 zx_zzjc_jcid();
 
 -                                         }
 
 -                                         else
 
 -                                         {
 
 -                                                 zx_zzjc_jcm();
 
 -                                         }
 
 -                                 }
 
 -                                 break;
 
 -                         default:
 
 - cs:                                printf("你的输入有误!\n");
 
 -                                 cls();
 
 -                                 break;
 
 -                         }
 
 -                 }
 
 -         }
 
 - }
 
  
- void csh_tq(int * i)
 
 - {
 
 -         if (tq_debug())
 
 -         {
 
 -                 *i = 1;
 
 -         }
 
 -         else
 
 -         {
 
 -                 printf("提权失败!是否继续?(1:继续,其他:退出):");
 
 -                 ch = getchar();
 
 -                 if (49 != ch)
 
 -                 {
 
 -                         return 0;
 
 -                 }
 
 -                 else
 
 -                 {
 
 -                         cls();
 
 -                         *i = 1;
 
 -                 }
 
 -         }
 
 - }
 
  
- void print_star()
 
 - {
 
 -         printf("------------------------------------------------------\n");
 
 -         printf("1:打印进程列表           2:终止进程                   \n");
 
 -         printf("0:退出                                                \n");
 
 -         printf("------------------------------------------------------\n");
 
 - }
 
  
- void print_jclb()
 
 - {
 
 -         HANDLE jckz;
 
 -         int jcjb;
 
 -         PROCESSENTRY32 jcxx;
 
 -         jckz = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);//先取得进程快照
 
 -         if (0 == jckz)//判断是否成功
 
 -         {
 
 -                 return;
 
 -         }
 
 -         jcxx.dwSize = sizeof(PROCESSENTRY32);//设置 PROCESSENTRY32 变量的大小
 
 -         jcjb = Process32First(jckz, &jcxx);//获取第一个进程句柄
 
 -         printf("进程名                        进程ID   父进程ID  优先级\n");
 
 -         while (jcjb != 0)//只要获取到的句柄不为零即成功获取就进入循环
 
 -         {
 
 -                 printf("%-32s", jcxx.szExeFile);
 
 -                 printf("%-8d", jcxx.th32ProcessID);
 
 -                 printf("%-10d", jcxx.th32ParentProcessID);
 
 -                 printf("%d\n", jcxx.pcPriClassBase);
 
 -                 jcjb = Process32Next(jckz, &jcxx);//如果不是我们要的进程就获取下一个进程句柄
 
 -         }
 
 -         CloseHandle(jckz);
 
 -         return;
 
 - }
 
  
- void zx_zzjc_jcid()
 
 - {
 
 -         int jcid;
 
 -         printf("请输入你要终止的进程ID:");
 
 -         scanf("%d", &jcid);
 
 -         cls();
 
 -         if (jcid < 0 || jcid>10000)
 
 -         {
 
 -                 printf("你输入有误!\n");
 
 -                 return;
 
 -         }
 
 -         if (KillProcess_jcid(jcid))
 
 -         {
 
 -                 printf("以成功终止进程!\n");
 
 -         }
 
 -         else
 
 -         {
 
 -                 printf("终止进程失败!\n");
 
 -         }
 
 - }
 
  
- int KillProcess_jcid(int jcid)
 
 - {
 
 -         HANDLE jb;
 
 -         jb = OpenProcess(PROCESS_ALL_ACCESS, FALSE, jcid);//打开进程
 
 -         if (TerminateProcess(jb, 0))//终止进程
 
 -         {
 
 -                 return 1;
 
 -         }
 
 -         else
 
 -         {
 
 -                 return 0;
 
 -         }
 
 - }
 
  
- void zx_zzjc_jcm()
 
 - {
 
 -         WCHAR jcm[100];
 
 -         printf("请输入你要终止的进程名:");
 
 -         scanf("%s", jcm);
 
 -         cls();
 
 -         if (KillProcess_jcm(jcm))
 
 -         {
 
 -                 printf("以成功终止进程!\n");
 
 -         }
 
 -         else
 
 -         {
 
 -                 printf("终止进程失败!\n");
 
 -         }
 
 - }
 
  
- int KillProcess_jcm(char*jcm)
 
 - {
 
 -         int jcjb, jcID;
 
 -         HANDLE jb;
 
 -         jcID = qjcID(jcm);//先获取进程ID
 
 -         jb = OpenProcess(PROCESS_ALL_ACCESS, FALSE, jcID);//打开进程
 
 -         if (TerminateProcess(jb, 0))//终止进程
 
 -         {
 
 -                 return 1;
 
 -         }
 
 -         else
 
 -         {
 
 -                 return 0;
 
 -         }
 
  
- }
 
  
- int qjcID(char*jcm)
 
 - {
 
 -         HANDLE jckz;
 
 -         int jcjb;
 
 -         PROCESSENTRY32 jcxx;
 
 -         jckz = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);//先取得进程快照
 
 -         if (0 == jckz)//判断是否成功
 
 -         {
 
 -                 return 0;
 
 -         }
 
 -         jcxx.dwSize = sizeof(PROCESSENTRY32);//设置 PROCESSENTRY32 变量的大小
 
 -         jcjb = Process32First(jckz, &jcxx);//获取第一个进程句柄
 
 -         while (jcjb != 0)//只要获取到的句柄不为零即成功获取就进入循环
 
 -         {
 
 -                 if (strcmp(jcm, jcxx.szExeFile) == 0)//判断进程名是否和我们要结束的一样
 
 -                 {
 
 -                         CloseHandle(jckz);
 
 -                         return jcxx.th32ProcessID;//如果是就返回进程PID
 
 -                 }
 
 -                 jcjb = Process32Next(jckz, &jcxx);//如果不是我们要的进程就获取下一个进程句柄
 
 -         }
 
 -         CloseHandle(jckz);
 
 -         return 0;//如果没有我们要的就返回0
 
 - }
 
  
- int tq_debug()
 
 - {
 
 -         int retn;
 
 -         TOKEN_PRIVILEGES qxlx;
 
 -         HANDLE  lpjb,jcjb;
 
 -         jcjb = GetCurrentProcess();
 
 -         OpenProcessToken(jcjb, TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY,&lpjb);
 
 -         LookupPrivilegeValueA(NULL,"SeDebugPrivilege",&qxlx.Privileges->Luid);
 
 -         qxlx.PrivilegeCount = 1;
 
 -         qxlx.Privileges->Attributes = SE_PRIVILEGE_ENABLED;
 
 -         retn = AdjustTokenPrivileges(lpjb, 0, &qxlx, NULL, NULL, NULL);
 
 -         CloseHandle(jcjb);
 
 -         return retn;
 
 - }
 
  
- void cls()
 
 - {
 
 -         while ((ch = getchar()) != '\n');
 
 - }
 
  复制代码 |   
 
评分
- 
查看全部评分
 
 
 
 
 
 |