По сути, существует 5 способов защитить ваш APK от взлома/реверсии/переупаковки:
1. Изолировать Java-программу
Самый простой способ — запретить пользователям доступ к программе Java Class. Это самый фундаментальный способ, и для этого существует множество конкретных способов. Например, разработчики могут разместить ключевой Java-класс на сервере, клиенты получают услуги, обращаясь к соответствующим интерфейсам сервера, а не напрямую к файлу класса. Таким образом, у хакеров нет возможности декомпилировать файлы классов. В настоящее время появляется все больше и больше сервисов стандартов и протоколов, предоставляемых через интерфейсы, такие как HTTP, веб-служба, RPC и т. д. Но существует множество приложений, не подходящих для этой защиты. Например, программы Java в автономных программах не могут быть изолированы.
2. Зашифровать файлы классов
Чтобы предотвратить прямую декомпиляцию файлов классов, многие разработчики шифруют некоторые ключевые файлы классов, такие как регистрационный номер, управление серийными номерами и другие связанные классы. Прежде чем использовать эти зашифрованные классы, программа должна сначала расшифровать эти классы, а затем загрузить эти классы в JVM. Эти классы могут быть расшифрованы аппаратно или программно.
Разработчики часто загружают криптографические классы через настраиваемый класс ClassLoader (Applet не поддерживает настраиваемый ClassLoader из соображений безопасности). Пользовательский ClassLoader сначала найдет криптографические классы, а затем расшифрует их. И, наконец, загрузка расшифрованных классов в JVM. Customed ClassLoader — очень важный класс в этом методе защиты. Поскольку сам он не зашифрован, он может стать первой целью хакера. Если соответствующий ключ дешифрования и алгоритм преодолены, то зашифрованные классы могут быть легко расшифрованы.
3. Преобразование в исходные коды
Преобразование программы в собственный код также является эффективным способом предотвращения декомпиляции. Потому что собственные коды часто трудно декомпилировать. Разработчики могут преобразовать все приложение в собственные коды или преобразовать только ключевые модули. Если просто преобразовать ключевую часть модулей, потребуется технология JNI для вызова, когда программы Java используют эти модули. Он отказался от кроссплатформенной функции Java при использовании этого метода для защиты программ Java. Для разных платформ нам необходимо поддерживать разные версии нативных кодов, что увеличит нагрузку на поддержку программного обеспечения и техническое обслуживание. Но для некоторых ключевых модулей иногда такое решение бывает необходимо. Чтобы гарантировать, что эти исходные коды не будут изменены или заменены, разработчикам часто необходимо подписывать эти коды цифровой подписью. Прежде чем использовать эти собственные коды, разработчикам часто необходимо аутентифицировать эти локальные коды, чтобы гарантировать, что эти коды не были изменены хакерами. Если проверка подписи пройдена, разработчики могут вызывать соответствующие методы JNI.
4. Обфускация кода
Обфускация кода заключается в реорганизации и обработке файла класса, заставляя обработанные коды выполнять ту же функцию (семантику), что и необработанные коды. Но обфусцированные коды трудно декомпилировать, т.е. декомпилированные коды очень сложно понять, поэтому декомпилированные кадры трудно понять настоящую семантику. Теоретически, если у хакеров будет достаточно времени, запутанные коды все же можно будет взломать. Даже некоторые люди разрабатывают инструмент деобфускации. Но из реальной ситуации, поскольку диверсифицированное развитие запутывания, зрелость теории запутывания, запутанные коды Java вполне могут предотвратить декомпиляцию.
5.Онлайн-шифрование
APK Protect (http://www.apkprotect.com/) — веб-сайт для онлайн-шифрования APK. Он обеспечивает защиту кодов Java и C++ для достижения эффекта от отладки и декомпиляции. Процесс эксплуатации прост и удобен.
Я предлагаю вам использовать этот последний метод, так как он может сэкономить вам больше времени. Я пробовал. Он очень прост в эксплуатации и не займет много времени.
person
user2563366
schedule
09.07.2013