清除守护进程程序
2016-05-05 09:34
260 查看
#include "windows.h" #include "stdio.h" #include "tlhelp32.h" int main() { ///////////////////////////////////////////////////////////////////// // 程序首先要暂停病毒进程 ///////////////////////////////////////////////////////////////////// printf("开始查杀病毒进程..."); // 给系统内所有的进程拍个快照 HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); if ( hSnap == INVALID_HANDLE_VALUE ) { printf("进程快照创建失败!"); return 0; } PROCESSENTRY32 Pe32 = { 0 }; // 在使用这个结构前,先设置它的大小 Pe32.dwSize = sizeof(PROCESSENTRY32); // 遍历进程快照 BOOL bRet = Process32First(hSnap, &Pe32;); // 通过循环来暂停病毒进程 while ( bRet ) { // 三个进程名称进行匹配 if ( strcmp(Pe32.szExeFile, "severe.exe")==0 || strcmp(Pe32.szExeFile, "conime.exe")==0 || strcmp(Pe32.szExeFile, "tfidma.exe")==0) { // 创建线程快照 HANDLE thSnap = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, Pe32.th32ProcessID); if ( thSnap == INVALID_HANDLE_VALUE ) { printf("%s线程快照创建失败!",Pe32.szExeFile); return 0; } THREADENTRY32 Te32 = { 0 }; // 在使用这个结构前,先设置它的大小 Te32.dwSize = sizeof(THREADENTRY32); // 遍历线程快照 BOOL tbRet = Thread32First(thSnap, &Te32;); // 通过循环来暂停病毒进程中的所有线程 while ( tbRet ) { //判断线程所属 if ( Te32.th32OwnerProcessID == Pe32.th32ProcessID ) { // 打开线程 HANDLE hThread = OpenThread(THREAD_ALL_ACCESS, FALSE, Te32.th32ThreadID); // 暂停线程 SuspendThread(hThread); // 关闭线程句柄 CloseHandle(hThread); } tbRet = Thread32Next(thSnap, &Te32;); } printf("%s进程暂停成功! ",Pe32.szExeFile); CloseHandle(thSnap); } bRet = Process32Next(hSnap, &Pe32;); } ///////////////////////////////////////////////////////////////////// // 程序接下来要结束病毒进程 ///////////////////////////////////////////////////////////////////// hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); if ( hSnap == INVALID_HANDLE_VALUE ) { printf("进程快照创建失败! "); return 0; } // 在使用这个结构前,先设置它的大小 Pe32.dwSize = sizeof(PROCESSENTRY32); // 遍历进程快照 bRet = Process32First(hSnap, &Pe32;); // 通过循环来结束病毒进程 while ( bRet ) { // 三个进程名称进行匹配 if ( strcmp(Pe32.szExeFile, "severe.exe")==0 || strcmp(Pe32.szExeFile, "conime.exe")==0 || strcmp(Pe32.szExeFile, "tfidma.exe")==0) { HANDLE hProcess = OpenProcess(PROCESS_TERMINATE, FALSE, Pe32.th32ProcessID); TerminateProcess(hProcess, 0); printf("病毒进程%s成功结束! ",Pe32.szExeFile); CloseHandle(hProcess); } bRet = Process32Next(hSnap, &Pe32;); } printf("病毒进程清理完毕! "); CloseHandle(hSnap); getchar(); return 0; }
相关文章推荐
- 替换百度的服务,其实很简单
- Activity的生命周期以及启动模式
- 工业水处理工程:反渗透纯净水处理设备技术特点
- win7 64位系统只有搜狗浏览器可以打开网页其他浏览器打不开的故障原因及解决方法
- 344ReverseString
- 前端调试效率低?试试这10个“Chrome开发者工具”使用技巧
- iOS之AFNetworking基本使用
- 用到的资源下载整理
- Android开发必备技能之Android数据存储(文件存储篇)
- 禁止指定 user_agent
- C++第五次实验
- 第四篇 Entity Framework Plus 之 Batch Operations
- String、StringBuffer与StringBuilder之间区别
- 怎么将本机密钥写入远程计算机ssh中
- Fragment切换动画
- GCC的符号可见性——解决多个库同名符号冲突问题
- android布局中使用include ,动态更改内容
- 导入第三方依赖到shell
- Android中蓝牙模块的使用
- VOCcode下载地址