安卓 NDK : override dynamic linking for native libraries?

原文 标签 android android-ndk openssl libpng android-security

我有一个通过 .SO 文件使用一些 native 库的应用程序。

我处于无法将应用程序的新版本上传到 Google Play 的情况,因为这些 native 库链接到旧版本的 OpenSSL 和 LibPNG,它们具有如下所述的安全漏洞:https://android-developers.blogspot.com.eg/2016/06/android-changes-for-ndk-developers.html

我的问题是:有什么方法可以将 .SO 文件与新版本的 OpenSSL 和 LibPNG 一起包含在新项目中,并覆盖与旧版本 OpenSSL 和 LibPNG 的链接?

知道我无法重建 .SO 文件,因为我没有源文件。

有什么解决方法可以解决这个问题吗?

最佳答案

如果您无法访问库的源代码,但拥有 .o文件(或 .a 存档),您可以选择不同版本的依赖项。

如果您使用 OpenSSL 和 libPNG 作为动态库,您的生活会更轻松。如果您将它们静态链接到您的 .so文件,你需要一些 advanced ELF manipulation techniques如果您幸运且有决心,这可能会有所帮助。

只有当您使用这些库的接口(interface)保持不变时,所有这些才能起作用。

关于安卓 NDK : override dynamic linking for native libraries?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41017405/

相关文章:

openssl - CSR 'BEGIN' header 是否有规范?

java - 如何使用抽屉导航选择ViewPager

android - 如何检查apk是否是zip对齐的?

android - Paint.setStrokeWidth() 使用什么度量单位?

c - NDK-扩展类并使用指向数组的指针会导致段错误

android - 一些链接和教程来学习ffmpeg

android - Android NDK r10e“找不到-lsupc++”

ssl - GCE上的自签名SSL证书-'无法解析SSL证书'

c++ - 我可以在单独的ssl上下文之间重用openssl x509store吗?

android - 使用 Google Maps Android API v2 显示 kml 文件而无需解析