C++ 使用静态库时DLL无法插入

C++ 使用静态库时DLL无法插入,c++,dll,linker,static-libraries,static-linking,C++,Dll,Linker,Static Libraries,Static Linking,我正在尝试创建一个DLL,该DLL可以注入到使用外部库的进程中(MinHook,socket.io客户端cpp),但每当我尝试使用sioclient中的任何内容时,DLL都无法注入 sioclient.lib位于链接器的附加依赖项和附加库目录中,它可以很好地编译 包括sio_client.h工作正常,没有效果,但添加了sio::client h到代码会导致DLL根本不注入,并且在注入时失败。我尝试过多个注射器和注射方法,结果都是一样的 最让我困惑的是,我可以很好地使用MinHook中的函数,比如

我正在尝试创建一个DLL,该DLL可以注入到使用外部库的进程中(
MinHook
socket.io客户端cpp
),但每当我尝试使用
sioclient
中的任何内容时,DLL都无法注入

sioclient.lib
位于链接器的附加依赖项和附加库目录中,它可以很好地编译

包括
sio_client.h
工作正常,没有效果,但添加了
sio::client h到代码会导致DLL根本不注入,并且在注入时失败。我尝试过多个注射器和注射方法,结果都是一样的

最让我困惑的是,我可以很好地使用MinHook中的函数,比如
MH_Initialize
,DLL注入和函数运行都很好,我正在以与
sioclient.lib
完全相同的方式链接
libMinHook.lib
,那么为什么我不能使用
sioclient
中的任何东西呢

我还用
IXWebSocket
尝试了这一点,结果与
sioclient
完全相同,出于某种原因
MinHook
是唯一有效的库


非常感谢您的帮助,我已经为此尝试了几个小时。

这是一个令人惊讶的说法:使用静态库时DLL无法注入。DLL使用带有函数指针(和变量)的全局trampoline表,您可以在其中截取一个点。如果提供具有相同名称函数的替换DLL,则情况也是如此。这就是使DLL注入成为可能的原因。但是,静态库在编译时是静态链接的。(这就是为什么它们被称为“静态库”。)在运行时没有蹦床表,也没有函数指针的解析。那么,在这种情况下,注入应该如何工作呢?也许,这是类似的:(我必须承认我没有想到分解和硬编码地址。我不会在生产代码中使用它,也许,因为我的工作是针对工业客户,而不是游戏黑客…-)基本上,我正在制作一个本机节点模块,以允许挂接进程函数,我尝试了一点“外部挂接”,但没有任何工作,所以我现在选择制作一个DLL,与我的模块通信并执行所有挂接。我花了一段时间研究了不同的IPC方法,并决定使用webhook,但我能找到的所有webhook库都存在这个问题,即如果使用了LIB中的任何内容,DLL总是无法注入。