android encryption proguard dexguard

android - ¿Cómo encripta DexGuard las clases?



encryption proguard (3)

Aunque usan el término cifrado, parece que realmente es una ofuscación. Digo esto simplemente porque aunque pueden encriptar ciertas cadenas / valores ... el hecho de que la clave de encriptación también debe almacenarse en la aplicación significa que están proporcionando un "candado" para el código mientras que al mismo tiempo empaqueta la "clave". " con eso.

Quiero comprobar cómo funciona DexGuard, pero parece que no tiene una versión de prueba gratuita.

¿Puede DexGuard encriptar una aplicación de Android? ¿O simplemente ofusca el código? ¿Cómo funciona el cifrado DexGuard? Si pudiera proporcionar código desde una aplicación de muestra ejecutada con DexGuard antes y después de la descompilación, sería genial.


DexGuard en la versión anterior que usa "DES" Alg para cifrar la clase especificada. Más tarde cambió "AES" alg. Después de cifrar la clase especificada, almacena los datos cifrados en otra clase a través del formato de matriz de datos con el método de descifrado. El método de descifrado que es un bloque estático en Dex es un método de formato clínico que ofusca el uso de la ofuscación del flujo de control y el ocultamiento API. Por lo tanto, es un poco desofuscar el método de descifrado. En otras clases, haga referencia al cambio de clase especificado al código de operación de reflexión. Cada vez que se ejecuta la APK, la clase cifrada se descifrará primero en el método estático. Y las clases descifradas se cargarán en la memoria dvm usando la API de reflexión. para que otra clase pueda hacer referencia a la clase especificada correctamente. Eso es. En mi opinión, DexGuard es una herramienta de ofuscación muy poderosa. Si cada característica de ofuscación se aplica a APK, le costará mucho tiempo invertir todo el programa real.


ProGuard proporciona ocultación de nombre: puede reemplazar los nombres originales de clases, métodos y campos por nombres cortos y sin sentido. DexGuard también proporciona cifrado de cadenas y cifrado de clase. El término encriptación puede ser confuso en este contexto, ya que estos son básicamente tipos de ofuscación más agresivos. Las cadenas y clases designadas se almacenan en alguna forma codificada intencionalmente compleja, y se descifran en tiempo de ejecución con claves y algoritmos que están necesariamente disponibles para la aplicación. De alguna manera similar, el mercado de Google Play puede cifrar aplicaciones enteras para Android 4.1. El entorno de tiempo de ejecución descifra la aplicación antes de que se ejecute, de forma controlada.

(Soy el desarrollador de ProGuard y DexGuard; siéntase libre de contactarme si le interesa)