加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

windows – 使用太多静态链接的CRT解决fls限制?

发布时间:2020-12-14 02:48:05 所属栏目:Windows 来源:网络整理
导读:当通过LoadLibrary加载外部DLL(不在我们的控制之下)时,我们遇到的问题是这些DLL中的静态链接CRT无法分配光纤本地存储.这类似于 mskb 193462,除了这是FLS并且只有128个. 有没有有用的方法来解决这个问题? CRT正在使用GetProcAddress来查找FlsAlloc(因为这显
当通过LoadLibrary加载外部DLL(不在我们的控制之下)时,我们遇到的问题是这些DLL中的静态链接CRT无法分配光纤本地存储.这类似于 mskb 193462,除了这是FLS并且只有128个.

有没有有用的方法来解决这个问题? CRT正在使用GetProcAddress来查找FlsAlloc(因为这显然从未在XP中存在过),所以它甚至真的需要它吗?

(这是在Vista上,其中FlsAlloc实际存在; DLL似乎使用MSVC8)

解决方法

坦率地说,没有解决方案,没有加载更少的dll.

您可以挂钩dll的导入地址表 – 但这种情况发生得太晚,因为您只能在LoadLibrary返回时安装IAT挂钩,并且CRT初始化代码可能会执行以响应已经处理过的DllProcessAttach.

您可以猜测在内存中找到kernel32.dll模块,并修补GetProcAddress的导出地址或者修补FlsAlloc以指向您的实现.但这种做法变得非常严重.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读