Cómo proteger mi aplicación contra la piratería

Estoy desarrollando una aplicación para Android y estoy planeando publicarla (aplicación de pago). He oído que es muy fácil pirata aplicaciones de Android (mucho más fácil que iphone). Me preguntaba de su experiencia o lo que sabe, ¿cómo puede aumentar la seguridad de mi aplicación? Sé que nunca puedo conseguirlo 100% asegurado, pero quiero hacer más difícil para la gente a pirata o distribuir ilegalmente ¿Ideas, experiencias, comentarios que puede compartir? Que será muy apreciado Saludos cordiales

Liberé una aplicación gratuita contra el malware para Android, y asegurándome de que nadie hackeado era esencial para su éxito. Las mayores amenazas contra una aplicación en el Android Market incluyen el código fuente, las aplicaciones pagadas copiadas / distribuidas y el re-keying. Les explico cada uno de ellos y la manera de resolverlos.

En primer lugar, este documento describe cómo invertir la ingeniería de una aplicación de Android descomponiendo el código compilado y ver el código fuente. No podrás bloquear que esto suceda a tu aplicación. Período. Alguien con un testamento siempre puede ver su código fuente si obtienen una copia de su apk (fácilmente disponible en un teléfono con raíces). La buena noticia es que puedes ofuscar las piezas importantes de tu código, lo que hace más difícil hacer ingeniería inversa. Proguard es una herramienta proporcionada por Android que le permite obfuscar (hacer más difícil de leer) su código durante el embalaje. Sin embargo, para evitar que se lea su código importante, tendrá que mover todos los métodos o variables vulnerables a un archivo que no sea una Activity , un Service o un BroadcastReceiver . Para conocer los hechos completos, lea la documentación.

Para proteger de nuevo la copia y la distribución ilegales de su aplicación, Google Play ofrece algunas opciones de licencia . Desafortunadamente, LVL no es enteramente seguro. Un detallado HOW-TO para saber cómo romperlo (pre-Google Play) está disponible aquí .

Por último, el artículo adjunto, así como numerosos artículos académicos y blogs en línea, describen cómo, una vez que el código fuente (o incluso el código fuente ofuscado) se filtra, una vez puede simplemente agregar algunos de sus propios códigos maliciosos, renunciar a la aplicación y Publicarlo en el Android Market. Las buenas noticias aquí son que, a menos que su contraseña de la llave de la licencia del android sea fácilmente guessable, o si usted lo da hacia fuera a otra persona, el atacante no podrá publicar una aplicación con la misma llave de licencia. Esto no sólo le protege de la culpa, sino que también hará que la aplicación malintencionada no pueda acceder a los datos disponibles a través de su aplicación original (como SharedPreferences ).

Con todo, la mejor manera de proteger realmente su aplicación de la piratería es configurar correctamente y usar Proguard , Licencia de Google Play , y firmar el apk final con una clave de licencia muy segura.

Podría agregar controles de manipulación combinados con obfuscation para alertar al usuario / deshabilitar funcionalidad / reportar al servidor si la aplicación ha sido pirateada. Yo uso DexGuard para obfuscation endurecido.

Controles de manipulación indebida

  • Aplicación del instalador: utilice el administrador de paquetes para asegurarse de que la aplicación de instalación sea la tienda de aplicaciones de play / amazon
  • Comprobación del emulador: compruebe las propiedades del sistema para obtener señales que indiquen que la aplicación se ejecuta en un emulador que fuera del dev podría indicar ataque / manipulación
  • Comprobación de Debuggable: utilice el administrador de paquetes para comprobar el indicador de depuración, esto debería estar apagado en el producto, por lo que podría indicar ataque / manipulación
  • Comprobación del certificado de firma: utilice el administrador de paquetes para verificar que la aplicación esté firmada con su certificado de desarrollador (esto se rompería si alguien lo desempaqueara y reemplazara / renunciara a la aplicación)

Actualización: Desde que respondí a esta pregunta, he escrito un artículo más detallado sobre la detección de manipulaciones.

Echar un vistazo al marco de licencias de google play.

http://developer.android.com/guide/market/licensing/index.html

Esta es tu mejor opción.

Google Play Licensing es un servicio basado en red que permite a una aplicación consultar un servidor de licencias de Google Play de confianza para determinar si la aplicación tiene licencia para el usuario del dispositivo actual. El servicio de licencias se basa en la capacidad del servidor de licencias de Google Play para determinar si un usuario determinado tiene licencia para utilizar una aplicación determinada. Google Play considera que un usuario tiene licencia si el usuario es un comprador registrado de la aplicación.

  • Dónde encontrar el usuario instalado certificado android 4.0 y superior
  • ¿Cómo se puede comprobar el permiso en tiempo de ejecución sin lanzar SecurityException?
  • Android obfuscation código y la aplicación segura de Android de la piratería
  • ¿Cómo puedo verificar si otra aplicación del sistema es genuina?
  • ¿Cómo lograr alta seguridad en aplicaciones móviles?
  • Acceso exclusivo al micrófono en Android
  • Cómo Hash String usando SHA-1 con la clave?
  • Ofuscación: ocultar valores codificados en java
  • Una implementación insegura de la interfaz X509TrustManager de google
  • ¿Qué tan seguras son las API de GeoLocation en dispositivos móviles?
  • Seguridad de base de datos Sqlite
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.