Intereting Posts
«Активность была уничтожена» иногда при заполнении viewpager фрагментами Android Studio & ProGuard: не удается разрешить символ getDefaultProguardFile? Обновление схемы GreenDAO и миграция данных? Выполнение запроса HTTPS с использованием Android Volley Как сделать панель контекстного actionmode накладывать мой макет вместо того, чтобы «толкать» его вниз Компилятор кинжала с дуплексной копией В каких обстоятельствах Android Log.wtf прекратит мое приложение? Ожидание разделителя пути класса ';' Перед '\ Android \ android-sdk \ build-tools \ 23.0.1 \ lib \ shrinkedAndroid.jar' в аргументе номер 8 Android NavigationView group group divider Задание ресурсов зависит от темы Простой салфетный жест в учебнике по работе? Получение JSON из объекта RetrofitError с использованием Retrofit Поддерживает ли Google Play In-App Billing Version 3 возврат средств? Установить <String> в android sharedpreferences не сохраняет силу Удалите все неиспользуемые ресурсы из проекта Android

Получить контрольную сумму исходных кодов в Android-библиотеке

Я разрабатываю андроидную библиотеку, и я хочу применить механизм обнаружения несанкционированного доступа к моему коду, поскольку он вызывает некоторые чувствительные финансовые веб-службы.

То, что я собираюсь реализовать, – это вычислить контрольную сумму apk (или ее важных частей), программно в среде выполнения, поэтому я могу помешать переупакованному или перекомпилированному apk быть в состоянии сделать какой-либо вред (защита от несанкционированного доступа).

До сих пор я пришел к выводу о вычислении контрольной суммы applicationInfo.publicSourceDir . Но я не уверен, что происходит с приложениями с несколькими файлами dex или несколькими splitApks.

Каков наиболее надежный способ вычисления контрольной суммы на основе кодовой базы приложения в Android, программно?

Solutions Collecting From Web of "Получить контрольную сумму исходных кодов в Android-библиотеке"

Если вы распространяете через игру, вы можете взглянуть на SafetyNet: https://developer.android.com/training/safetynet/index.html

Подход контрольной суммы может применяться к файлам с одним файлом или zip. Это будет длительный процесс проверки контрольной суммы всех файлов. Я думаю, вы не в том направлении.

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

Это то, что делается для того,

  1. Зашифруйте свой apk – чтобы его трудно было добраться до исходного кода. Refer – APK для защиты apk от обратного проектирования – Проверьте инструменты для обфускации.

  2. Используйте шифрование данных при отправке / получении данных из WebService. Вы можете использовать HMAC для защиты данных. Убедитесь, что ваш сервер достаточно умен, чтобы блокировать пользовательские / запрашивающие приложения, если есть несколько плохих вызовов. HMAC прост в реализации, и есть библиотеки для генерации ключей HMAC.

Получить подпись приложения, привязанную к сертификату, используемому для подписания APK

 public static String getAppSignature(Context context) { try { for (Signature signature : context.getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES).signatures) { MessageDigest md = MessageDigest.getInstance("SHA"); md.update(signature.toByteArray()); return Base64.encodeToString(md.digest(), Base64.DEFAULT); } } catch (Exception e) { /* Do nothing */ } return null; } 

Это можно сравнить с сохраненным значением, чтобы проверить, является ли сертификат подписи оригиналом или нет.