Я проводил тестирование безопасности в приложении для Android.Одна вещь, которую я пытаюсь обернуть вокруг себя, это безопасность ключей API;в частности ключи Google Места и Карты.Существует множество публикаций, в которых рассказывается о параметрах, а именно о компиляции ключей в исходный код, размещении их в файлах ресурсов, компиляции их в общую библиотеку и т. Д. В моем конкретном случае ключ Maps находится в файле манифеста, а ключ Placesнаходится в общей библиотеке.Я создал подписанный APK, чтобы проверить, насколько сложно будет получить и использовать один из ключей.Я сделал следующее:
- Обратный инжиниринг APK с помощью apktool,
- Открыл манифест и взял ключ Карты,
- Создал поддельную версию приложения ста же структура пакета, что и у оригинала, содержащего действие с фрагментом карты Google,
- Поместите ключ Maps в поддельный манифест,
- Запустил приложение, которое отображало карту
Тогда я:
- Создал новый класс в поддельном приложении с тем же пакетом и именем, что и оригинал с кодом для загрузки общей библиотеки из / data / data / [имя пакета],
- Скопировал совместно используемую библиотеку из APK, созданного в обратном порядке, в папку / data / data / [имя пакета] поддельного приложения,
- Запустил поддельное приложение, которое затем распечаталоКлюч API Locations
В итоге, без особых усилий, у меня были оба ключа, которые я мог затем использовать в фальшивой версии приложения.
Я уверен, что долженупустить что-то.Похоже, что единственная опция для Карт - хранить ключ в манифесте.Что мешает кому-то делать то, что я сделал?Конечно, это не может быть просто равнодушным.Я понимаю, что кто-то, вероятно, был бы пойман, если бы попытался опубликовать свое приложение, используя взломанный ключ API.Тем не менее, кто-то может создать приложение и попросить людей загрузить его.Для клиентов было бы огромным препятствием, если бы компании приходилось менять взломанный ключ каждый раз, когда кто-то с ним связывался.