#define WIN32_MEAN_AND_LEAN #include "CProcessInfo.h" #include #include using namespace std; struct FileInfo { char ClassName[261]; char WindowText[261]; char ProcessName[261]; char ProgramDescr[261]; bool Found; /*FileInfo() { memset(&ClassName, 0, sizeof(ClassName)); memset(&WindowText, 0, sizeof(WindowText)); memset(&ProcessName, 0, sizeof(ProcessName)); memset(&ProgramDescr, 0, sizeof(ProgramDescr)); Found = false; }*/ }; int main(int argc, char* argv[]) { CProcessInfo ProcessList; cout << "-------------------------------" << endl; cout << " NeWbY's FTP Detector " << endl; cout << " Made by Paul aka. NeWbY " << endl; cout << "-------------------------------" << endl; if (!ProcessList.Initialize()) { cout << "ProcessList.Initialize()"; return GetLastError(); } FileInfo FTPServers[] = { {"RSockWin", "RWinSocket", "ServUDaemon.exe", "Serv-U FTP Daemon", false}, {"ServUWinClass", "Serv-U", "ServUDaemon.exe", "Serv-U FTP Daemon", false}, {"TAdminForm", "", "ServUAdmin.exe", "Serv-U Administrator", false}, {"TMessageForm", "User messages", "ServUAdmin.exe", "Serv-U Administrator", false}, {"TApplication", "Serv-U", "ServUAdmin.exe", "Serv-U Administrator", false}, {"TPUtilWindow", "", "ServUAdmin.exe", "Serv-U Administrator", false}, {0, 0, 0} }; HWND hWindow = FindWindow(0, 0); while (hWindow) { if (!GetParent(hWindow)) { unsigned long pID; char ClassName[256]; char WindowText[256]; GetWindowThreadProcessId(hWindow, &pID); GetWindowText(hWindow, WindowText, sizeof(WindowText)); GetClassName(hWindow, ClassName, sizeof(ClassName)); char* ProcessName = ProcessList.GetProcessName(pID); char* ProgramPath = ProcessList.GetProcessFilePath(pID); for (int i = 0; FTPServers[i].ClassName[0]; ++i) { if ((ClassName[0]) && (strcmp(ClassName, FTPServers[i].ClassName) == 0) && (!FTPServers[i].Found)) { FTPServers[i].Found = true; printf("Found FTP Program matching ClassName!\r\n"); printf("ClassName: %s\r\n", ClassName); if (WindowText[0]) printf("WindowText: %s\r\n", WindowText); if (ProcessName[0]) printf("ProcessName: %s\r\n", ProcessName); if (ProgramPath[0]) printf("ProgramPath: %s\r\n", ProgramPath); if (FTPServers[i].ProgramDescr[0]) printf("Program Description: %s\r\n", FTPServers[i].ProgramDescr); printf("------------------------------------------------------------\r\n\r\n"); break; } else if ((WindowText[0]) && (strcmp(WindowText, FTPServers[i].WindowText) == 0) && (!FTPServers[i].Found)) { FTPServers[i].Found = true; printf("Found FTP Program matching WindowText!\r\n"); printf("WindowText: %s\r\n", WindowText); if (ClassName[0]) printf("ClassName: %s\r\n", ClassName); if (ProcessName[0]) printf("ProcessName: %s\r\n", ProcessName); if (ProgramPath[0]) printf("ProgramPath: %s\r\n", ProgramPath); if (FTPServers[i].ProgramDescr[0]) printf("Program Description: %s\r\n", FTPServers[i].ProgramDescr); printf("------------------------------------------------------------\r\n\r\n"); break; } else if ((ProcessName[0]) && (strcmp(WindowText, FTPServers[i].ProcessName) == 0) && (!FTPServers[i].Found)) { FTPServers[i].Found = true; printf("Found FTP Program matching processname!\r\n"); printf("Process Name: %s\r\n", ProcessName); if (WindowText[0]) printf("Window Text: %s\r\n", WindowText); if (ClassName[0]) printf("Class Name: %s\r\n", ClassName); if (ProgramPath[0]) printf("Program Path: %s\r\n", ProgramPath); if (FTPServers[i].ProgramDescr[0]) printf("Program Description: %s\r\n", FTPServers[i].ProgramDescr); printf("------------------------------------------------------------\r\n\r\n"); break; } } /*if (WindowText[0]) printf("WindowText: %s\r\n", WindowText); if (pID) printf("PID: %d\r\n", pID); if (ProcessName) printf("Process Name: %s\r\n", ProcessName); if (ProcessFilePath) printf("Process FilePath: %s\r\n", ProcessFilePath); if (ProcessName) delete[] ProcessName; if (ProcessFilePath) delete[] ProcessFilePath;*/ } hWindow = GetWindow(hWindow, GW_HWNDNEXT); } //system("pause"); return 0; }