0

我以前问过这个问题,尽管人们忽略了它。再说一遍,这是一个冗长的话题,因此我会尽量缩短。

当您将 DLL 注入到您不拥有的程序中时,如何避免使用 DLL Main?很多人可能都知道,例如在 DLL main 中使用线程时,它只会导致程序停止(在大多数情况下)。

我真的很想知道从注入的 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;
}

但是,在注入的 DLL 中使用 DllMain 会导致系统停止,因为我已经达到了太多的地步。

我需要一种方法来防止系统停止,并可能在 DLLMain 之外创建线程,例如,可能是一种无需在我注入的 DLL 中使用 DLLMain 即可启动 DLL 线程的方法。

4

0 回答 0