Intereting Posts
Android Studio не генерирует zip-aligned apk Android XML Есть ли способ использовать пространство имен инструментов с пользовательскими атрибутами? IOException при чтении из InputStream Не удалось найти свойство processManifest на com.android.build.gradle.internal.api.ApplicationVariantImpl Лучше всего использовать плагины Android Studio или Intellij Idea wth? ADB не запускается (сообщение об ошибке отсутствует) Как сделать fadein изображения на экране активности Android? Требуется ли в Интернете интернет? Получить местоположение GPS через службу на Android Android Google Service Place picker setLatLngBounds () не работает Неверно настроены службы игр для Android. Кто-нибудь знает, как исправить? NullPointerException в службах Google Play при вызове play () на RemotePlaybackClient Environment.getExternalStorageDirectory не возвращает путь к съемному хранилищу Android – добавьте значение по умолчанию в базу данных GreenDao Android PreferenceScreen – могу ли я использовать его без сохранения настроек в SharedPreferences?

Получить контрольную сумму исходных кодов в 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; } 

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