gpt4 book ai didi

c# - 固定地址在.NET中被占用

转载 作者:IT老高 更新时间:2023-10-28 23:02:52 25 4
gpt4 key购买 nike

支持 FIPS 的 OpenSSL 有一个限制 - 它必须在固定地址加载 libeay32.dll,如果在任何其他地址加载,初始化检查失败,因此不能在 FIPS 模式下使用。

所以我们根据微软的推荐选择了地址,在一些机器上,地址时常被其他各种库占用——比如 MSVCR120_CLR0400.dllmscorlib.ni.dllclr.dll,你懂的。

有什么方法可以检查是否占用了一些固定地址 + 长度并要求操作系统为我释放那部分内存,比如将这些 dll 重新设置为其他内存部分或类似的东西?

更新:

我从 20 个使用 ListDLLs 的设备收集了信息,并且有一些模式加载到哪里,但它远未明确定义。所以我进行了一些数学运算,发现最大的差距,在我拥有的那 20 条日志中没有加载任何内容,将 libeay32 基地址更改为该差距中的某个地方(差距比 dll 大约 6 倍,所以我选择了~中间)并且仍然在几个尝试之后应用程序设法在 libeay32 之前的那个间隙中加载一些东西(具体来说 - clrjit.dll,它的基地址为 0x10000000,我认为这是默认的),虽然在应用程序中我尝试加载 libeay32尽快。

最佳答案

你为什么不结合给出的提示:

  • 使用 /INCLUDE链接您的程序以强制对该库进行静态依赖时使用 libeay.dll 中的符号。
  • /FIXED 编译 libeay32.dll所以它不能重新定位。

因此,它是在加载可执行文件时加载的,在任何托管代码运行之前,而不是稍后动态加载,因此所有那些可重定位的 dll 还不存在,并且不能妨碍。

关于c# - 固定地址在.NET中被占用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30974018/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com