Salut a tous,
j'essaye de creer un thread dans un dll, mais, ca plante...

voila le code...

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
/*
** fonction appellee quand la dll est attachee
*/

DWORD WINAPI  attachFunction(LPVOID lpParam)
{
	MessageBox(NULL, "WAPATILOUMPA!!!!!!!!! ", "hui", MB_OK);
	MessageBox(NULL, "WAPATILOUMPA!!!!!!!!! ", "hui", MB_OK);
	return 1;
}

/*
** main
*/

BOOL
WINAPI
DllMain(IN	HANDLE	DllInstance,
		IN	ULONG	ReasonForCall,
		IN	LPVOID	Reserved)
{
	DWORD	ThreadId;
	switch (ReasonForCall)
	{
	case	DLL_PROCESS_ATTACH:
		CreateThread(NULL, NULL, attachFunction, NULL, 0, &ThreadId);
		break;
	case	DLL_PROCESS_DETACH:
		break;
	}
	return (TRUE);
}
la dll est injectee dans un processus via createRemoteThread, ca plante apres l'affichage de la premiere boite de dialogue.
je ne comprend pas du tout pourquoi

si vous avez des infos, n'hesitez pas!


pour info voila en gros les etapes du code injecteur:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
	HANDLE			hProcess;
	HANDLE			hRemoteThread;
	LPVOID			RemoteProcAddr;

	hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, th32ProcessID);
	RemoteProcAddr = VirtualAllocEx(hProcess, NULL, MAX_PATH, MEM_COMMIT,
	PAGE_EXECUTE_READWRITE);

	WriteProcessMemory(hProcess, RemoteProcAddr, TEXT("C:\\test.dll")), 
	MAX_PATH, NULL);

	hRemoteThread = CreateRemoteThread(hProcess, NULL, 0, 
	(LPTHREAD_START_ROUTINE)GetProcAddress(GetModuleHandle(TEXT("kernel32.dll")),
	 "LoadLibraryA"), RemoteProcAddr, 0, NULL);