android - Cómo proteger mi aplicación contra la piratería
security piracy-prevention (3)
Lancé una aplicación anti-malware gratuita para Android, y asegurarme de que nadie la pirateara era esencial para su éxito. Las mayores amenazas contra una aplicación en el Android Market incluyen la filtración del código fuente, aplicaciones pagas copiadas / distribuidas y la modificación de claves. Explico cada uno a continuación y la forma de resolverlos.
En primer lugar, este documento describe cómo realizar ingeniería inversa en una aplicación de Android desempacando el código compilado y viendo el código fuente. No podrás bloquear esto para que no ocurra en tu aplicación. Período. Alguien con un testamento siempre puede ver su código fuente si obtiene una copia de su apk (fácilmente disponible en un teléfono rooteado). La buena noticia es que puedes ocultar las partes importantes de tu código, lo que dificulta la ingeniería inversa. Proguard es una herramienta proporcionada por Android que le permite oscurecer (hacer más difícil de leer) su código durante el empaquetado. Sin embargo, para evitar que se lea su código importante, deberá mover todos los métodos o variables vulnerables a un archivo que no sea una Activity
, un Service
o un BroadcastReceiver
. Para conocer todos los hechos, lea la documentación.
Para protegerse contra la copia y distribución ilegal de su aplicación, Google Play ofrece algunas opciones de licencia . Desafortunadamente, LVL tampoco es completamente seguro. here un HOW-TO detallado sobre cómo descifrarlo (antes de Google Play).
Por último, el documento vinculado anteriormente, así como numerosos artículos académicos y blogs en línea describen cómo, una vez que se filtra el código fuente (o incluso el código fuente ofuscado), una vez puede simplemente agregar algo de su propio código malicioso, renunciar a la aplicación y publicarlo en Android Market. La buena noticia aquí es que, a menos que su contraseña de clave de licencia de Android sea fácilmente adivinable, o si se la da a otra persona, el atacante no podrá publicar una aplicación con la misma clave de licencia. Esto no solo lo protegerá de la culpa, sino que también hará que la aplicación maliciosa no pueda acceder a los datos disponibles a través de su aplicación original (como SharedPreferences
).
En definitiva, la mejor manera de proteger realmente su aplicación contra la piratería es configurar correctamente y usar Proguard , Google Play Licensure , y firmar su apk final con una clave de licencia muy segura.
Estoy desarrollando una aplicación de Android y estoy planeando publicarla (aplicación de pago). He oído que es muy fácil piratear aplicaciones de Android (mucho más fácil que el iphone). Me preguntaba por su experiencia o por lo que sabe, ¿cómo puede aumentar la seguridad de mi aplicación? Sé que nunca puedo obtenerlo al 100%, pero quiero que sea más difícil para las personas piratearlo o distribuirlo ilegalmente ¿Alguna idea, experiencia o comentario que pueda compartir?
Puede agregar verificaciones de manipulación combinadas con ofuscación para alertar al usuario / deshabilitar la funcionalidad / informar al servidor si la aplicación ha sido pirateada. Uso DexGuard para la ofuscación endurecida.
Controles de manipulación
- Aplicación de instalación: use el administrador de paquetes para asegurarse de que la aplicación de instalación sea la tienda de aplicaciones play / amazon.
- Verificación del emulador: compruebe las propiedades del sistema en busca de indicios de que la aplicación se está ejecutando en el emulador, lo que fuera de dev podría indicar un ataque / alteración
- Verificación de depuración: use el administrador de paquetes para verificar el indicador de depuración, este debe estar desactivado en el producto, por lo que podría indicar un ataque / alteración
- Verificació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 desempaquetara y reembalara / presentara la aplicación)
Actualización: Desde que respondí esta pregunta, escribí un artículo más detallado sobre detección de manipulación.
eche 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 confiable para determinar si la aplicación tiene licencia para el usuario actual del dispositivo. El servicio de licencias se basa en la capacidad del servidor de licencias de Google Play para determinar si un usuario dado tiene licencia para usar una aplicación determinada. Google Play considera que un usuario tiene licencia si el usuario es un comprador registrado de la aplicación.