支持FIPS的OpenSSL有一个限制 - 它必须在固定地址加载libeay32.dll
,如果在任何其他地址加载,它将无法进行初始化检查,因此无法在FIPS模式下使用。
因此,我们根据Microsoft的推荐选择了地址,并且在某些机器上不时会被其他各种库占用 - 例如MSVCR120_CLR0400.dll
或mscorlib.ni.dll
或clr.dll
,你明白了。
有没有办法检查是否有一些固定的地址+长度,并要求操作系统为我释放那部分内存,比如将这些dll转换为其他内存部分或类似内容?
更新
我从使用ListDLL的20个设备中收集了信息,并且有一些模式在哪里加载,但它远未定义明确。所以我运行了一些数学运算,找到了最大的差距,在我拥有的20个日志中没有加载任何内容,将libeay32基地址更改为该差距中的某个位置(间隙比dll大6倍,所以我&#39已经选择〜中间了)仍然在几次尝试之后应用程序设法在libeay32之前加载了一些东西(具体来说 - clrjit.dll,它的基地址为0x10000000,我认为是默认的),虽然在应用程序中我尝试尽快加载libeay32。