Intereting Posts
Как создать динамическую таблицу данных в android? Отправка ACTION_CALL Intent в Android с символом hash # Почему onMeasure () дважды вызывается в моем пользовательском представлении? Реверсное воспроизведение Android и кадр за кадром Андроид просматривает намерение файла с определенным расширением Вызовите (и получите ответ) код USSD в фоновом режиме? Почему элементы исчезают, когда я просматриваю listView? Передача дополнительных данных в шейдер фрагмента через VBO – DynamicSpriteBatch Добавить путь к файлу jar, добавленный в проект библиотеки в PROGUARD Использование IntelliJ с плагином Android, а не использование Android Studio Как создать «дополнение к лицензированию» для моего приложения для Android? Что делает определенные классы андроидов «must -keep»? Java.lang.IncompatibleClassChangeError, вызванный экземпляром ActivityTestRule Сохранить / Создать MMS в папке «Входящие» Android Realm – Передача объекта Realm с использованием Intent

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

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