我目前正在为游戏写作弊。我将一个Dll注入到firefox(或其他)中,然后创建2个线程以使作弊功能起作用。我在没有任何特殊参数和WaitForMultipleObjects的情况下调用createThread()。线程正在创建但它不起作用。我在控制台应用程序中测试了我的代码,一切正常。我想这与WaitForMultipleObjects函数有关,但我不能放弃。
HANDLE threads[2];
threads[0] = CreateThread(NULL, 0, thread1, 0, 0, NULL);
threads[1] = CreateThread(NULL, 0, thread2, 0, 0, NULL);
WaitForMultipleObjects(2, threads, true, INFINITE);
CloseHandle(threads[0]);
CloseHandle(threads[1]);
答案 0 :(得分:2)
问题是系统在保持加载程序锁定的同时执行DllMain
。线程执行时,它们会尝试调用DllMain
以发送线程附加通知。这需要他们等待加载器锁定,因为你的第一个调用正在等待线程,所以它永远不会被释放。