2010-07-27 2 views
3

У меня есть встроенная андроидная библиотека (.so) Я связываюсь с некоторым приложением. В собственном коде я хочу проверить имя подписчика/пакета вызывающего приложения.Идентификация вызывающего приложения в Android NDK

Причина в том, что в настоящее время любой может открыть файл .apk, взять мой .so-файл и использовать его для создания собственных приложений.

Есть ли способ безопасно идентифицировать вызывающее приложение со стороны Java? Это может быть имя пакета, подпись или что-то еще, что может однозначно идентифицировать приложение Android.

ответ

2

Код JNI связан с именем пакета Java и может быть вызван только из одного пакета и класса. Чтобы улучшить безопасность, вы можете проверить поле Java private static final из кода JNI.

+0

Другое приложение может использовать один и тот же пакет и имя класса для вызова функций. Это не сложно, им просто нужно посмотреть список экспортируемых функций из файла .so. Но, я думаю, частное статическое конечное поле может добавить дополнительную безопасность. Злоумышленник все еще может обойти это, разобрав мое приложение, но это длинный снимок. Благодарим за ответ! –

+0

Злоумышленник может всегда сворачивать вашу защиту. Лучшая безопасность - это правовая защита. – ognian

+0

. Вы можете организовать с помощью приложения какой-то критический протокол критического вызова и ответа, но любая проверка, которую вы добавите в .so, может быть отключена, изменив .so. Вы можете сделать повторное использование своего кода сколь угодно трудным, но вы не можете сделать его невозможным. Решите, сколько усилий вы готовы вложить в него. – fadden

Смежные вопросы