很简单,分为几个步骤,第一步分析a.EXE得知释放了sys、exe、dll,我们先判断是否中毒了
代码:
BOOL SystemState(HWND hWnd) { HANDLE Handle=CreateFileA("\\.\\slHBKernel32",GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL); if(Handle!=INVALID_HANDLE_VALUE) { SetWindowText(hWnd,"系统中毒"); } BOOL Bl=PathFileExistsA("C:\\Windows\\System32\\drivers\\HBKernel32.SYS"); if(Bl!=FALSE) { SetWindowText(hWnd,"系统中毒"); } Bl=PathFileExistsA("C:\\Windows\\System32\\HBQQXX.dll"); if(Bl!=FALSE) { SetWindowText(hWnd,"系统中毒"); } Bl=PathFileExistsA("C:\\Windows\\System32\\System.exe"); if(Bl!=FALSE) { SetWindowText(hWnd,"系统中毒"); } return TRUE; }
代码:
BOOL SetWindowShow(void) { HWND hWnd; hWnd = FindWindow("HBInject32Class", NULL) ; if(!hWnd) return FALSE; ShowWindow(hWnd,SW_SHOW); EndDialog(hWnd,0); return TRUE; }
代码:
BOOL StopAutoRun(void) { SHDeleteValue(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Windows NT\\CurrentVersion\\Windows", "AppInit_Dlls"); SHDeleteValue(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Windows\\CurrentVersion\\Run","HBService32"); SHDeleteKey(HKEY_LOCAL_MACHINE, "SYSTEM\\ControlSet\\Services\\HBKernel32"); SHDeleteKey(HKEY_LOCAL_MACHINE, "SYSTEM\\ControlSet001\\Services\\HBKernel32"); SHDeleteKey(HKEY_LOCAL_MACHINE, "SYSTEM\\ControlSet002\\Services\\HBKernel32"); SHDeleteKey(HKEY_LOCAL_MACHINE, "SYSTEM\\ControlSet003\\Services\\HBKernel32"); SHDeleteKey(HKEY_LOCAL_MACHINE, "SYSTEM\\CurrentControlSet\\Services\\HBKernel32"); return TRUE; }
代码:
BOOL EnumModule(DWORD Pid) { HANDLE hProc= OpenProcess(PROCESS_ALL_ACCESS,TRUE,Pid); HANDLE Handle = (HANDLE)CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, Pid); MODULEENTRY32 Mod32; Mod32.dwSize = sizeof(MODULEENTRY32); if(Module32First(Handle, &Mod32)) { do{ ModifyChar(Mod32.szModule); int A=strcmp(Mod32.szModule,"HBQQXX.DLL"); if(A==0) { ZwUnmapViewOfSection(hProc,Mod32.modBaseAddr); return TRUE; } }while (Module32Next(Handle, &Mod32)); } return FALSE; } BOOL EnumProcess(void) { PROCESSENTRY32 PE32; HANDLE hProcessSnap; hProcessSnap = CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS,0); if( hProcessSnap == INVALID_HANDLE_VALUE ) { CloseHandle(hProcessSnap); return FALSE; } PE32.dwSize = sizeof( PROCESSENTRY32 ); if( !Process32First( hProcessSnap, &PE32 ) ) { CloseHandle(hProcessSnap); return FALSE; } do{ EnumModule(PE32.th32ProcessID); } while( Process32Next( hProcessSnap, &PE32 )); return TRUE; }
来个标准过程:
第一步:判断是否中毒
第二步:结束System.exe进程
第三步:查找进程中的HBQXX.DLL模块,并且释放掉
第四步:释放驱动
第五步:处理注册表等等,删除模块文件等等善后工作