很简单,分为几个步骤,第一步分析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模块,并且释放掉
第四步:释放驱动
第五步:处理注册表等等,删除模块文件等等善后工作