puedo protect play para instalar google descargar descargadas android apk

android - para - instalar google play protect



Cómo hacer apk segura. Proteger de Decompile (7)

Hola, estoy desarrollando una aplicación para una empresa y nuestra aplicación contiene una base de datos de sqlite que contiene información personal y queremos protegerla. ¿Cómo podemos protegerlo? Porque un apk es fácilmente descompilar completamente porque lo hice yo mismo. Así que ahora la pregunta es ¿Cómo asegurar una apk? y también cómo proteger mi base de datos que está en el teléfono después de instalar la aplicación en el teléfono.



Básicamente, hay 5 métodos para proteger su APK al ser craqueo / reversión / reenvasado:

1. Aislar el programa de Java

La forma más sencilla es hacer que los usuarios no puedan acceder al programa Java Class. Esta es la forma más fundamental, y tiene una variedad de formas específicas para lograrlo. Por ejemplo, los desarrolladores pueden colocar la Java Class clave en el servidor, los clientes adquieren servicios al acceder a las interfaces relevantes del servidor en lugar de acceder directamente al archivo de Class. Por lo tanto, no hay forma de que los hackers puedan descompilar archivos de clase. Actualmente, hay más y más estándares y servicios de protocolos proporcionados a través de interfaces, como HTTP, servicio web, RPC, etc. Pero hay muchas aplicaciones que no son adecuadas para esta protección. Por ejemplo, los programas Java en programas independientes no pueden aislarse.

2. Cifrar archivos de clase

Para evitar que los archivos de clase se descompongan directamente, muchos desarrolladores cifrarán algunos archivos de clase clave, como el número de registro, la administración del número de serie y otras clases relacionadas. Antes de usar estas clases cifradas, el programa necesita descifrar estas clases primero, y luego cargar estas clases en JVM. Estas clases se pueden descifrar por hardware o software.

Los desarrolladores a menudo cargan clases criptográficas a través de una clase personalizada ClassLoader (Applet no es compatible con ClassLoader personalizado debido a la seguridad). Customed ClassLoader buscará primero las clases criptográficas y luego las descifrará. Y finalmente cargando las clases desencriptadas a JVM. Customed ClassLoader es una clase muy importante en este método de protección. Debido a que no está encriptado, puede ser el primer objetivo de un hacker. Si se han superado la clave y el algoritmo de descifrado relevantes, entonces las clases cifradas se pueden descifrar fácilmente.

3. Convertir a códigos nativos

Convertir el programa a códigos nativos también es una forma efectiva de evitar la descompilación. Porque los códigos nativos suelen ser difíciles de descompilar. Los desarrolladores pueden convertir toda la aplicación a códigos nativos, o también pueden convertir solo módulos clave. Si solo convierte la parte clave de los módulos, necesitará la tecnología JNI para llamar cuando los programas Java estén usando estos módulos. Abandonó la función multiplataforma de Java cuando usaba este mothod para proteger programas Java. Para diferentes plataformas, necesitamos mantener diferentes versiones de los códigos nativos, lo que aumentará el soporte de software y la carga de trabajo de mantenimiento. Pero para algunos módulos clave, a veces esta solución suele ser necesaria. Para garantizar que estos códigos nativos no se modifiquen o reemplacen, los desarrolladores a menudo necesitan firmar digitalmente estos códigos. Antes de usar estos códigos nativos, los desarrolladores a menudo necesitan autenticar estos códigos locales para asegurarse de que los hackers no hayan cambiado estos códigos. Si se pasa la verificación de la firma, los desarrolladores pueden llamar a los métodos JNI relevantes.

4. Ofuscación de código

La ofuscación de código es reorganizar y procesar el archivo de Clase, haciendo que los códigos tratados cumplan la misma función (semántica) con los códigos no tratados. Pero los códigos ofuscados son difíciles de descompilar, es decir, los códigos descompilados son muy difíciles de entender, por lo tanto, los equipos de descompilación son difíciles de entender realmente como semánticos. Teóricamente, si los piratas informáticos tienen suficiente tiempo, los códigos ofuscados aún pueden estar resquebrajados. Incluso algunas personas están desarrollando una herramienta de ofuscación. Pero a partir de la situación real, desde el desarrollo diversificado de la ofuscación, la teoría madura de la ofuscación, los códigos de Java ofuscados pueden evitar la descompilación.

5. Cifrado en línea

APK Protect era un sitio web de cifrado en línea para APK, pero aparentemente la actividad se ha interrumpido desde 2013 o algo así. Proporcionó códigos Java y protección C ++ para lograr efectos anti-depuración y descompilación.

Originalmente le sugerí que usara este último método porque le podría ahorrar más tiempo. Según mi experiencia, era muy sencillo de operar y no llevaría mucho tiempo.


Con Jellybean esto se ha convertido en una posibilidad.

$ openssl enc -aes-128-cbc -K 000102030405060708090A0B0C0D0E0F -iv 000102030405060708090A0B0C0D0E0F -in my-app.apk -out my-app-enc.apk $ adb install --algo ''AES/CBC/PKCS5Padding'' --key 000102030405060708090A0B0C0D0E0F --iv 000102030405060708090A0B0C0D0E0F my-app-enc.apk pkg: /data/local/tmp/my-app-enc.apk Success

Por favor, lea la siguiente publicación del blog para más details



Puedes probar ''Anti Decompiler (Android) Trial''

https://play.google.com/store/apps/details?id=com.tth.AntilDecompilerTrial

Hace algo que Proguard no hace:

  • Oculta todos los valores const (cadena, carácter), nunca verás texto claro como "mi clave", "mi val" ... en tu archivo apk
  • Nombre de archivo ofuscado, al que se hace referencia en AndroidManifest.xml
  • Agregue código falso a su código fuente. Evento que a los poderosos descompiladores les gustan: dex2jar, jd-gui, ... no puede revertir exactamente su archivo apk. La mayoría de las funciones se mostrarán con el comentario ''Error''.

=====

  • Después de la transformación, si le da a alguien su proyecto de origen, será casi imposible de leer y entender.
  • Esta solución no excluye a Proguard, puede combinarlos juntos. (función, campo La ofuscación de Proguard es mejor que las características de ofuscación de esta solución)

Si es la base de datos que contiene datos confidenciales, puede cifrar los valores de varias columnas o la base de datos completa, como se menciona en la otra respuesta, y asegurarse de que la contraseña no esté almacenada en el dispositivo, sino que el usuario debe ingresarla al acceder al datos.

Si hay piezas de código que necesita proteger, realmente no hay una buena manera de asegurarla. Todo lo que puede hacer para una cantidad limitada de casos de uso es crear una dependencia de un servicio en línea y asegurar el servidor. Pero para muchas aplicaciones esto no sería una opción.


Si se trata de información secreta que no debe caer en manos de sus usuarios, no puede protegerla. Es fundamentalmente imposible colocar información en un dispositivo (código o datos), y hacer que la aplicación acceda a ella, pero no permitir que alguien con el dispositivo tenga acceso a esa información.

Cifrar la información no tiene sentido desde el punto de vista de la seguridad, ya que su aplicación debe contener todo lo necesario para descifrarla para poder utilizarla, y un atacante suficientemente motivado siempre puede extraerla y descifrarla por su cuenta.

Todo lo que puede hacer es hacer que sea más molesto y lento obtener acceso a esa información, lo que solo ayuda si no es realmente necesario mantenerla en secreto. Esto es lo que puede hacer usar proguard para ofuscar su archivo .apk.