有没有更简单的方法来找出在构建openssl期间指定的选项,例如当时是否定义了OPENSSL_NO_SRTP?我只能从以下内容中浏览有限的信息:
openssl version -a
命令。但是,如果我只有二进制文件,是否有办法找出诸如此类的选项?该问题背后的原因是,如果未使用此选项编译openssl,则会引入漏洞“ CVE-2014-3513”。
您可以openssl通过version命令获得有关已安装设备的大部分(全部?)配置信息。特别是,
openssl version -f
Run Code Online (Sandbox Code Playgroud)
将列出在构建时指定的所有编译器标志。
如果 OpenSLL 是使用 OPENSSL_NO_SRTP编译的,则ssleay32.dll不包含与 SRTP 支持相关的函数:SSL_CTX_set_tlsext_use_srtp, SSL_get_selected_srtp_profile, SSL_set_tlsext_use_srtp, SSL_get_srtp_profiles。幸运的是,它们的名称中都有“srtp”,因此您可以使用dumpbin检查 DLL 是否包含这些函数。例如:
dumpbin.exe /EXPORTS ssleay32.dll | findstr /R /C:"srtp"
就我而言,它找到了这些函数,因此我的 OpenSSL 是在没有 OPENSSL_NO_SRTP 的情况下编译的:
dumpbin.exe /EXPORTS ssleay32.dll | findstr /R /C:"srtp"
358 57 00026CD0 SSL_CTX_set_tlsext_use_srtp
357 AA 00026D00 SSL_get_selected_srtp_profile
360 B4 00026D10 SSL_get_srtp_profiles
354 E8 00026D40 SSL_set_tlsext_use_srtp
我希望这有助于解决您的问题。
PS 不幸的是,据我所知 OpenSSL 不记录编译时选项。
| 归档时间: |
|
| 查看次数: |
3292 次 |
| 最近记录: |