Red de conocimiento informático - Espacio del host - El cifrado de aplicaciones móviles es confuso. ¿Es necesario cifrar la aplicación?

El cifrado de aplicaciones móviles es confuso. ¿Es necesario cifrar la aplicación?

Cuando desarrollamos una aplicación, generalmente nos encontramos con el problema de cómo proteger el código APK de la aplicación. El lenguaje Java APK se basa en jvm, por lo que es fácil descompilar el código fuente del APK. Incluyendo todos los archivos de clase, archivos src, archivos jsp, etc.

Hasta la fecha, la tecnología de ofuscación es el método de protección más básico para la protección de APK. También existen muchas herramientas de ofuscación JAVA, incluidas comerciales, gratuitas y de código abierto, la mayoría de las cuales ofuscan archivos de clase. También hay algunas herramientas que procesan primero el código fuente y luego las clases, lo que aumenta la intensidad de la ofuscación.

Las principales tecnologías de ofuscación actuales se pueden dividir en ofuscación de símbolos, ofuscación de datos, ofuscación de control, reorganización del flujo de control y ofuscación preventiva según los objetivos de ofuscación. En este sentido, el editor se centró en un análisis sencillo.

Primero, los símbolos son confusos

Hay mucha información en los archivos de clase que no tiene nada que ver con la ejecución del programa en sí, como nombres de variables, nombres de métodos, etc. todos los cuales tienen ciertos significados. Por ejemplo, si un método se llama getKeyLength(), entonces este método podría usarse para devolver la longitud de la clave. La ofuscación de símbolos consiste en codificar estos mensajes en representaciones sin sentido. Por ejemplo, todos los métodos están numerados a partir de método_001; todas las variables están numeradas a partir de varant_001; La confusión de símbolos puede traer ciertas dificultades a la descompilación del APK, protegiendo así la seguridad de la aplicación. /noticiasInfo? id=313

Para funciones privadas y variables locales, sus símbolos se pueden cambiar sin afectar la ejecución del programa. Sin embargo, a menudo es necesario conservar algunos nombres de interfaz, funciones públicas y variables miembro si otros módulos externos necesitan hacer referencia a estos símbolos; de lo contrario, los módulos externos no pueden encontrar los métodos y variables con estos nombres.