Así que ya hemos pasado por esto varias veces, lanzamos un juego (de bajo costo) y alguien lo piratea y lo pone en un espejo. Configuramos las Alertas de Google para todas nuestras aplicaciones, por lo que nos dicen a diario quién está hackeando. Hasta ahora, hemos implementado el servicio de licencias, como lo sugirió Google, nuestra sal se hace aleatoriamente cada vez que se inicia la licencia con la identificación única del dispositivo. Ejecutamos el servicio de verificación una vez, cuando la aplicación se inicia por primera vez. Luego generamos un hash de 512 caracteres para la clave y el valor almacenado que se compara con SharedPreferences a partir de ahí en adelante.
Ahora, sé que verificar una vez es probablemente donde se bloquea la aplicación. Lo más probable es que nuestro código de bytes haya sido revisado y compilado sin la línea que inicia la verificación.
Desde aquí, no quiero ofuscar nuestro código, ya que lo he visto roto antes. Quiero algo un poco más sólido, y también quiero aprender cómo hacerlo correctamente. En este punto, estoy más interesado en aprender que en ganar dinero, ya que solo el 2% de las personas buscará alguna vez una versión pirateada.
Hasta ahora, por mi cuenta, he creado un generador de números aleatorios que se coloca en varias áreas de inicio del juego. Cuando se inicia (por ejemplo, 1 de cada 50 veces) se verifica la licencia. Sé que esto dificultaría la piratería porque el cracker tendría que eliminar cada caso, compilar, eliminar, compilar. Sin embargo, este método aún es crackable ... entonces, ¿qué sugieren ustedes? Nuevamente, estoy realmente interesado en este proceso de seguridad, así que por favor eduque, no convierta esto en una discusión sobre ofuscación o verificación periódica basada en una marca de tiempo.
Gracias