Проверить, что Android apk не был повторно упакован?
В целях повышения безопасности моего Android-приложения, чтобы флаг, если .apk был извлечен, изменен, переупакован и ушел в отставку. Вот статья из Zdnet, отметившая проблему link1.
Угроза заключается в том, что приложение нацелено хакерами, они могут добавлять вредоносный код и загружать в альтернативное хранилище приложений и обманывать пользователей, чтобы загрузить его.
Итак, я думаю код для проверки контрольной суммы сертификата apk или подписания?
Я ценю, что код приложения можно переупаковать и удалить любой код безопасности, но он увеличивает сложность его переупаковки, возможно, достаточно, чтобы попробовать другое приложение.
[обновление] Я знаю, что модуль лицензирования магазина Google Play предлагает нечто подобное, но я ищу что-то для неплатежных приложений и других/нерыночных мест.
Ответы
Ответ 1
В итоге я использовал Dexgaurd (платный obfuscator для Android) предлагает модуль, который задерживает проверку apk. В основном, как просто реализовать и предлагает лучшую среднюю защиту.
Здесь код для проверки:
dexguard.util.TamperDetection.checkApk(context)
Основная проблема заключается в том, где хранить контрольную сумму apk для проверки с учетом того, что ее можно заменить. Метод dexguard заключается в том, чтобы проверять его локально, но используя другие функции, такие как шифрование класса/строки и api, скрывающие неясность этого вызова.
Ответ 2
Вот некоторые из статей, которые могут вам помочь.
Получение подписи APK во время выполнения.
Самостоятельная проверка подписки APK.
Как проверить подпись APK.
Ответ 3
Используйте службу лицензирования Google. Он будет подключаться к магазину воспроизведения, чтобы убедиться, что пользователь купил приложение каждые несколько дней. (вы можете установить количество) Также пройдите в ProGuard. Он удаляет все имена классов, методов и переменных из вашего кода, что делает его очень трудным для понимания после его декомпиляции.