固定地址在.NET中占用

Gie*_*ius 13 .net c# c++ windows dll

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

喜欢-所以我们根据微软的建议,并在某些机器上,从时间地址到时间由各种其他图书馆占领选择地址MSVCR120_CLR0400.dllmscorlib.ni.dll或者clr.dll,你明白了吧.

有没有办法检查是否采取了一些固定的地址+长度,并要求操作系统为我释放那部分内存,比如将这些dll转换为其他内存部分或类似的东西?

更新:

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

Ded*_*tor 1

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

  • 链接程序时使用/INCLUDE符号来强制对该库进行静态依赖。libeay.dll
  • 编译libeay32.dll时使用/FIXED,因此无法重定位。

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