有沒有一種更容易的方法來找出在構建openssl期間指定的選項,例如當時是否定義了OPENSSL_NO_SRTP? 我只能從:
openssl version -a
命令中閃爍有限的信息。但是,如果我只有二進制文件,是否有辦法找出這些選項?此問題背後的原因是,如果未使用此選項編譯openssl,則會引入一個漏洞「CVE-2014-3513」。openssl:如何找到openssl編譯的配置選項
2
A
回答
1
如果OpenSLL編譯與OPENSSL_NO_SRTP然後ssleay32.dll不包含SRTP supprt相關的功能: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
我希望幫助解決你的問題。
P.S. 不幸的是,據我所知,OpenSSL沒有記錄編譯時間選項。
0
感謝@sirgeorge的回答。我忘了指定Linux作爲平臺,因此Linux中的等價物檢查:
$ objdump -f libssl.so -x | grep -i SRTP
0000000000000000 l df *ABS* 0000000000000000 d1_srtp.c
00000000002609e0 l O .data 0000000000000030 srtp_known_profiles
000000000003d100 g F .text 0000000000000012 SSL_set_tlsext_use_srtp
000000000003cb40 g F .text 0000000000000149 ssl_parse_serverhello_use_srtp_ext
000000000003d120 g F .text 0000000000000012 SSL_CTX_set_tlsext_use_srtp
000000000003ca90 g F .text 00000000000000ab ssl_add_serverhello_use_srtp_ext
000000000003ca50 g F .text 0000000000000029 SSL_get_srtp_profiles
000000000003ca80 g F .text 0000000000000008 SSL_get_selected_srtp_profile
000000000003cc90 g F .text 0000000000000128 ssl_add_clienthello_use_srtp_ext
000000000003cdc0 g F .text 0000000000000210 ssl_parse_clienthello_use_srtp_ext
2
相關問題
- 1. 使用'shared'選項編譯OpenSSL?
- 2. 如何編譯OpenSSL for x64?
- 3. 是php配置選項--with-openssl需要?
- 4. 如何編譯OpenSSL的相對rpath的
- 5. 如何用新的OpenSSL庫編譯PHP
- 6. 如何用最新的openssl編譯curl
- 7. PHP與舊的OpenSSL編譯
- 8. 如何在Beaglebone Black上編譯openssl 1.0.2f?
- 9. OpenSSL編譯問題SSL_export_keying_material()
- 10. 使用SSLv3編譯OpenSSL 1.1.0f
- 11. 錯誤編譯的OpenSSL /演示/ SSL/serv.cpp的OpenSSL
- 12. 如何在Ubuntu上將OpenSSL從OpenSSL 1.0.1f更新到OpenSSL 1.0.2g?
- 13. 找不到的OpenSSL/evp.h當我編譯openssl_aes.c用gcc
- 14. D8048:無法使用/ ZW選項編譯C文件'openssl \ applink.c'
- 15. 我如何更改openssl配置?
- 16. 什麼是openssl -new選項?
- 17. 編譯openssl失敗,「/ usr/bin/ld:找不到-lz」
- 18. 在編譯ownCloud客戶端時出現'找不到OpenSSL'錯誤
- 19. 的OpenSSL的Windows的x64編譯錯誤
- 20. Node.js的編譯與OpenSSL的支持
- 21. 錯誤的OpenSSL編譯爲Win32
- 22. 的OpenSSL 1.0.0d編譯然後DLL代
- 23. 未定義參考編譯OpenSSL的
- 24. 無法運行新編譯的OpenSSL
- 25. 利用openssl編譯的Lib curl失敗
- 26. Android CMake:找不到OpenSSL
- 27. Qt無法找到openssl
- 28. Android NDK編譯器openssl發生錯誤
- 29. 用openSSL錯誤編譯靜態Qt
- 30. 在Windows 8上編譯OpenSSL地鐵
謝謝。真正需要粗體的「無」。 :-) – Khanna111 2014-10-17 18:14:39
沒問題,我認爲「nm」會更容易使用:「nm -C.so | grep srtp」 – sirgeorge 2014-10-17 23:29:14