struct ProcInfo {
HWND hWnd;
DWORD dwProcId;
CHAR szTitle[255];
CHAR szClass[255];
};
void DetectHideToolz()
{
DWORD dwProcId;
HWND hWnd;
ProcInfo mProc[255];
int mIdList[255];
int nCount = 0;
int nPID = 0;
int i = 0;
char class_main[255];
hWnd = FindWindow(0,0); // tim cua so null
while( hWnd > 0) // neu cua so null ton tai
{
if (GetParent(hWnd) == 0) // && IsWindowVisible(hWnd)
{
GetWindowThreadProcessId(hWnd, &dwProcId); // lay thread va gan cho ProcId
// Kiem tra xem OpenProcess co bi chan bang Hooking khong ?
if (!OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, dwProcId))
{
mProc[nCount].hWnd = hWnd;
mProc[nCount].dwProcId = dwProcId ;
GetWindowTextA(hWnd, mProc[nCount].szTitle, 255);
GetClassNameA(hWnd, mProc[nCount].szClass, 255);
if ((strcmp(mProc[nCount].szTitle,"MU") !=0)) strcpy(class_main,mProc[nCount].szClass); // lat Class cua Main.exe
nCount++;
for (i = 0; i < nPID; i++) if (dwProcId == mIdList[i]) // Kiem tra co chua ?
break;
if ((i == nPID) && strcmp(mProc[nCount].szClass,class_main)!=0) // kiem tra xem neu tools nao hide # main thi cho vao danh sack kill
mIdList[nPID++] = dwProcId; // Cho vao danh sach
}
}
hWnd = GetWindow(hWnd, GW_HWNDNEXT); // Chuyen sang cua so ke tiep
}
if (nCount > 0)
{
for (i = 0; i < nCount; i++)
{
if (IsWindow(mProc[i].hWnd)) // Cua so nay con ton tai khong ?
{
// Thu tat lan luot bang 4 buoc ?
SendMessageA(mProc[i].hWnd, WM_CLOSE, 0, 0); // 1. Close
SendMessageA(mProc[i].hWnd, WM_QUIT, 0, 0); // 2. Quit
SendMessageA(mProc[i].hWnd, WM_DESTROY, 0, 0); // 3. Destroy
ExitProcess(0);
//EndTask(mProc[i].hWnd, FALSE, TRUE); // 4. EndTask
char buffer[100];
sprintf(buffer,"%s",c_WebPage);
ShellExecute(NULL, "open", "iexplore.exe",buffer,NULL, SW_SHOWMAXIMIZED);
}
}
}
}