Какие существуют инструменты, которые предлагают защиту apk для Android (против реверсирования и переупаковки)?

Кажется, что одно из успешных приложений моей компании было переупаковано как torjan и распространено на сторонних рынках (за пределами google play). Я ищу надежное решение, которое защитит наши приложения от таких проблем в будущем.

До сих пор я видел:

  • http://www.droidactivator.org/
  • http://www.androidlicenser.com/

Но, похоже, они не предлагают комплексного решения.

Какие-нибудь идеи кто-нибудь?

Я думаю, вы смотрите на него с неправильной точки зрения. Не уверены в вашем конкретном случае, но обычно переупакованные приложения не являются «обратными инженерами». Т.е. у вредоносного пользователя мало внимания на внутренности вашего приложения. Троян может быть добавлен просто в точке входа вашего приложения, и в этом случае троянец выполнит, а затем приступит к запуску приложения. В этом случае обфускация не сделает ничего, кроме замедления вашего приложения.

В принципе, существует 5 методов защиты APK от взлома / реверсирования / переупаковки:

1.Изоляционная программа Java

Самый простой способ – сделать пользователей неспособными получить доступ к программе Java Class. Это самый фундаментальный способ, и он имеет множество конкретных способов достижения этого. Например, разработчики могут размещать ключевой Java-класс на сервере, клиенты приобретают сервисы путем доступа к соответствующим интерфейсам сервера, а не напрямую к файлу класса. Таким образом, хакеры не могут декомпилировать файлы Class. В настоящее время все больше и больше стандартов и протоколов предоставляются через интерфейсы, такие как HTTP, Web Service, RPC и т. Д. Но для этой защиты не существует много приложений. Например, Java-программы в автономных программах не могут изолировать.

Файлы классов 2.Encrypt

Для предотвращения декомпиляции файлов класса многие разработчики будут шифровать некоторые ключевые файлы классов, такие как регистрационный номер, управление серийными номерами и другие связанные классы. Прежде чем использовать эти зашифрованные классы, программе необходимо сначала дешифровать эти классы, а затем загрузить эти классы в JVM. Эти классы могут быть дешифрованы с помощью аппаратного обеспечения или программного обеспечения.

Разработчики часто загружают криптографические классы через собственный класс ClassLoader (апплет не поддерживает настроенный ClassLoader из-за безопасности). Пользовательский ClassLoader сначала найдет криптографические классы, а затем расшифрует их. И, наконец, загрузка расшифрованных классов в JVM. Customed ClassLoader – очень важный класс в этом методе защиты. Поскольку он сам не зашифрован, он может стать первой целью хакера. Если соответствующий ключ и алгоритм дешифрования были преодолены, то зашифрованные классы могут быть легко дешифрованы.

3. Преобразование в родные коды

Преобразование программы в собственные коды также является эффективным способом предотвращения декомпиляции. Поскольку родные коды часто трудно декомпилировать. Разработчики могут конвертировать все приложение в собственные коды или могут также конвертировать только ключевые модули. Если вы просто конвертируете ключевую часть модулей, для вызова этой программы потребуется использовать технологию JNI, когда Java-программы используют эти модули. Он отказался от кросс-платформенной функции Java при использовании этого mothod для защиты программ Java. Для разных платформ нам необходимо поддерживать разные версии собственных кодов, что увеличит нагрузку на программное обеспечение и нагрузку на обслуживание. Но для некоторых ключевых модулей иногда это решение часто необходимо. Чтобы гарантировать, что эти родные коды не будут изменены или заменены, разработчикам часто необходимо подписать эти коды в цифровой форме. Прежде чем использовать эти собственные коды, разработчикам часто требуется аутентифицировать эти локальные коды, чтобы гарантировать, что эти коды не были изменены хакерами. Если проверка подписи передается, то разработчики могут вызывать соответствующие методы JNI.

4.Code Obfuscation

Обфускация кода заключается в реорганизации и обработке файла класса, заставляя обработанные коды выполнять ту же функцию (семантику) с необработанными кодами. Но сфабрикованные коды трудно декомпилировать, т. Е. Декомпилированные коды очень трудно понять, поэтому декомпилировать сотрудников сложно понять истинную семантику. Теоретически, если у хакеров достаточно времени, запутанные коды все еще могут быть взломаны. Даже некоторые люди разрабатывают де-обфускационный инструмент. Но из реальной ситуации, поскольку диверсифицированное развитие обфускации, зрелая теория обфускации, запутанные коды Java, вполне могут предотвратить декомпиляцию.

Шифрование 5.Online

APK Protect ( http://www.apkprotect.com/ ) – это онлайн-сайт для шифрования APK. Он обеспечивает Java-коды и защиту кода C ++ для достижения эффектов отладки и декомпиляции. Процесс работы прост и прост.

Я предлагаю вам использовать этот последний метод, чтобы он мог сэкономить вам больше времени. Я пробовал. Он очень прост в эксплуатации, и он не займет много времени.