2016-12-07 6 views
4

У меня есть приложение, которое использует некоторые собственные библиотеки через .SO-файлы.Android NDK: переопределить динамическое связывание для собственных библиотек?

Я нахожусь в ситуации, когда я не могу загрузить новую версию приложения для Google играть, потому что эти родные библиотеки ссылаются на старые версии OpenSSL и Libpng, которые имеют уязвимости безопасности, как описано здесь: https://android-developers.blogspot.com.eg/2016/06/android-changes-for-ndk-developers.html

Мой вопрос: есть ли способ включить файлы .SO в новый проект вместе с новыми версиями OpenSSL и LibPNG и переопределить ссылку на старые версии OpenSSL и LibPNG?

Зная, что я не могу восстановить файлы .SO, потому что у меня нет исходных файлов.

Есть ли способ обхода решения?

+0

* есть ли способ включить .SO *, очевидно, если ваша библиотека не использует динамическую библиотеку openssl/libpng, то вы не можете – Selvin

+0

Простите, но можете ли вы объяснить больше? –

+0

Более того ** вы не можете **? ... подумать о [статически скомпилированной библиотеке] (https://en.wikipedia.org/wiki/Static_library) как о самой части программы ... и вы не сделали 't написал, если вы используете OpenSSL и LibPNG в качестве динамической или статической библиотеки – Selvin

ответ

1

Если вы потеряли доступ к исходному коду своей библиотеки, но имеете файлы .o (или архив .a), вы можете выбрать другую версию зависимостей.

Если вы используете OpenSSL и libPNG в качестве динамических библиотек, ваша жизнь проще. Если вы их статически связали в файл .so, вам понадобится advanced ELF manipulation techniques, который может помочь, если вам повезет и решительно.

Все это может работать, только если интерфейсы, которые вы используете в этих библиотеках, остаются нетронутыми.