Как избежать 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, которую я ввел.

0 ответов

Другие вопросы по тегам