Как избежать DLL Main?
Я спрашивал об этом раньше, хотя люди игнорировали это. Опять же, это была длинная тема, поэтому я постараюсь сделать это короче.
Когда вы внедряете DLL в программу, которой вы не владеете, как вы можете избежать использования DLL Main? Многие из вас могут знать, что когда вы используете поток, например, в main DLL, он просто вызывает остановку программы (в большинстве случаев).
Мне бы очень хотелось узнать, как лучше всего запустить поток из Injected DLL, не помещая его в DLL Main..., что мне кажется невозможным, так как я не знаю как.
Я знаю, что вы можете поместить скомпилированный.dll, который программа должна загрузить в папку, однако это не настоящая DLL, например DirectX, и загрузить требуемые там библиотеки DLL, однако в настоящее время я делаю это, и это означает, что нужно управлять моей программой через DirectX взломать. Который кто-то уже внедрил в другую программу (согласно журналам отладки MySQL). Я знаю, что это можно сделать с помощью инжектора, но это будет сложнее.
Кто-нибудь знает способ, как я мог бы убить за один прямо сейчас?
РЕДАКТИРОВАТЬ: Для этого потока является дубликатом, это не я уже использую это вставить мою DLL.
int InjectDLL(HANDLE Handle, const char* Path)
{
void *Lib, *String;
Lib = (void*)(LoadLibraryA);
String = (void*)VirtualAllocEx(Handle, NULL, strlen(Path), MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE);
WriteProcessMemory(Handle, (void*)String, Path, strlen(Path), NULL);
CreateRemoteThread(Handle, NULL, NULL, (LPTHREAD_START_ROUTINE)Lib, (void*)String, NULL, NULL);
return true;
}
однако использование DllMain в Injected DLL приведет к остановке системы, так как я достиг точки, где это слишком много.
Мне нужен способ предотвратить остановку системы и, возможно, создать поток за пределами DLLMain, например, возможно, способ запустить поток DLL без необходимости использовать DLLMain в DLL, которую я ввел.