C
Hi,
KN4CK3R schrieb:
Main-Thread der Anwendung suspendieren
greetz KN4CK3R
aber was is dann mit den anderen Threads!? Die laufen doch dann einfach weiter. Is des ned schlecht!? War mir nicht ganz sicher ob das stimmt und hab mal schnell was geschrieben:
#include <windows.h>
#include <process.h>
#include <stdio.h>
DWORD g_dwMainThreadID;
unsigned int __stdcall ThreadFunc(void* pVoid)
{
BOOL bMainThreadSuspended = FALSE;
HANDLE hMainThread = OpenThread(THREAD_SUSPEND_RESUME, FALSE, g_dwMainThreadID);
int i = 0;
if(hMainThread != NULL)
{
if(SuspendThread(hMainThread) != (DWORD) -1)
bMainThreadSuspended = TRUE;
printf("form second thread: main thread supeneded: %i\n", bMainThreadSuspended);
for( i = 0; i < 10; i++)
{
printf("from second thread: round: %i\n", i);
Sleep(1000);
}
ResumeThread(hMainThread);
CloseHandle(hMainThread);
}
else
printf("couldnt open thread!\n");
return 0;
}
int main(int argc, char** argv)
{
HANDLE hThread;
int i;
g_dwMainThreadID = GetCurrentThreadId();
printf("main thread id: %u\n", g_dwMainThreadID);
printf("start second thread....\n");
hThread = (HANDLE)_beginthreadex(NULL, 0, ThreadFunc, NULL, 0, NULL);
for(i = 0; i < 10; i++)
{
printf("main thread: round: %u\n", i);
Sleep(1000);
}
WaitForSingleObject(hThread, INFINITE);
printf("end main thread\n");
return 0;
}
Ausgabe:
main thread id: 3816
start second thread....
main thread: round: 0
form second thread: main thread supeneded: 1
from second thread: round: 0
from second thread: round: 1
from second thread: round: 2
from second thread: round: 3
from second thread: round: 4
from second thread: round: 5
from second thread: round: 6
from second thread: round: 7
from second thread: round: 8
from second thread: round: 9
main thread: round: 1
main thread: round: 2
main thread: round: 3
main thread: round: 4
main thread: round: 5
main thread: round: 6
main thread: round: 7
main thread: round: 8
main thread: round: 9
end main thread
Und das will er denk ich ned. Ich hab mal einen Quellcode gesehen der aus der ntdll.dll die Funktion "ZwSuspendProcess" exportiert. Weiss aber ned in wie weite diese zu gebrauchen ist.
Wies ich gemacht hab einen Prozess zu suspenden:
Mich als Debugger drangehaent und bei jeder CREATE_THREAD / CREATE_PROCESS notification einfache den Thread suspended.
Peace & Blessed Love C0de4Fun