Da Sie Ihre ursprüngliche Frage geändert, werde ich meine Antwort ein wenig neu ordnen ...
Es gibt erhebliche Grenzen gesetzt, was Sie in einem DLL-Einstiegspunkt sicher tun können .
Bitte lesen Sie sorgfältig die Remaks auf der folgenden Seite: https://msdn.microsoft.com/en-us/library/windows/desktop/ms682583(v=vs.85).aspx und https://msdn.microsoft.com/en-us/library/windows/desktop/aa370448(v=vs.85).aspx
Zum Beispiel sollte es nicht mehr als 300 ms (empfohlene Zeit) nehmen während der DLL_PROCESS_ATTACH. Du gibst auch nichts zurück (sollte ein boolescher Wert sein).
Ich denke jedoch, der Hauptgrund, dass Ihre Software hängt, ist, weil MessageBox
und/oder getch()
wahrscheinlich dort ein Deadlock erstellt. OutputDebugString
In Bezug auf die MessageBox
Verwendung stattdessen beziehen sich auf diese Antwort: https://stackoverflow.com/a/10981735/5874704
Auch als in den Kommentaren vorgeschlagen:
nicht die while-Schleife in DllMain setzen Sie. Verwenden Sie CreateThread in DllMain, um einen neuen Thread zu starten. Setzen Sie die While-Schleife dort
Zuvor haben Sie auch nach der Definition des DLLMain gefragt. Dies ist die "bare" -Funktion der DllMain:
BOOL WINAPI DllMain(
HINSTANCE hDllHandle,
DWORD nReason,
LPVOID Reserved)
{
BOOL bSuccess = TRUE;
switch (nReason)
{
case DLL_PROCESS_ATTACH:
break;
case DLL_PROCESS_DETACH:
break;
case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
break;
}
return bSuccess;
}
Versuchen Sie DLL-Injektion durchzuführen? –
"Ich versuche gerade, eine DLL in ein Projekt zu injizieren" Ich habe erfolgreich die DLL in den Prozess injiziert, ich habe versucht, mit einem Meldungsfeld auf Dllmain zu testen, und es zeigte sich, aber jedes Mal versuche ich eine While-Schleife zu verwenden es stürzt ab. –
Verwenden Sie Umwege oder wird manuell und in den Prozessbereich injiziert? Hast du sichergestellt, dass deine Seite ausführbar ist? –