1

这可能是显而易见的,但对我来说没有多大意义。我正在尝试创建一个要使用 C++ 注入游戏进程的 dll。我已经读过我不应该从这个方法中调用像 CreateThread 这样的东西,因为它是“危险的”。如果我有这样的另一种方法,它仍然危险吗?(伪):

foo()
{
    CreateThread();
}

DllMain(reason)
{
    if(reason == attach)
    {
        foo();
    }
}

如果这不安全,究竟应该怎么做?

4

1 回答 1

1

是的,您仍然违反了“您不应该进行 API 调用和/或创建线程”的规则。仅仅因为您从 DllMain 调用的函数进行 API 调用并不会改变这一点,因为它仍在 DllMain 内部被调用,只是在调用堆栈的更下方。

这个stackoverflow question中有更多相关的答案和链接。

于 2015-04-06T18:01:55.960 回答