oculto juegos juego espaƱol empty dish collector android security google-play copy-protection

juegos - El juego de Android sigue siendo pirateado



juegos android 7.1 1 (11)

En primer lugar, NO me considero un profesional en el campo de seguridad de SW en absoluto, pero:

Creo que algo importante es permitir que la aplicación sea dependiente en algunas partes del control de firma. No permita que afecte de inmediato, pero deje que configure algunos indicadores o cambie algunos valores. más adelante, use esas banderas, compruébelas, deje que la ausencia / incorrección de ellas provoque una excepción de algún tipo que puede terminar la aplicación. Siempre que el control de firma solo sea relevante en este momento, es fácil pasarlo por alto, para eliminar la línea, una vez que toca más áreas en el código, su aplicación se vuelve más difícil (o menos fácil ...) para hackear. Además, como yo lo veo, no todos los controles deben llamar a la misma rutina para la sanción, porque esto también hará que sea más fácil encontrar el mecanismo de protección y terminarlo.

Por supuesto, la sanción a tomar en casos de SW ilegal puede variar, es posible que desee bloquear la aplicación cuando se usa de forma ilegal, pero también puede querer mantenerla en funcionamiento, y solo enviar un mensaje que le pida al usuario que compre una copia legal de la aplicación.

Si esto es lo que no quisiste escuchar, lo siento por tu tiempo :)

Así que hemos pasado por esto varias veces, lanzamos un juego (por poco dinero) y alguien lo piratea y lo pone en un espejo. Configuramos Google Alerts para todas nuestras aplicaciones, por lo que nos informan a diario quién está haciendo el hackeo. Hasta ahora, hemos implementado el servicio de licencias como Google ha sugerido, nuestra sal se realiza al azar cada vez que se inicia la licencia con la identificación del dispositivo único. 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 en las Preferencias Compartidas de allí en adelante.

Ahora, sé que la verificación una vez es probablemente donde se bloquea la aplicación. Nuestro bytecode probablemente ha sido revisado y recompilado sin la línea que inicia el control.

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. Estoy más interesado en aprender que en hacer dinero en este momento, ya que solo el 2% de las personas buscará 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 50 veces), se verifica la licencia. Sé que esto haría más difícil hackear porque el cracker tendría que eliminar cada caso, compilar, eliminar, compilar. Este método, sin embargo, todavía se puede descifrar ... entonces, ¿qué sugieren? Una vez más, estoy realmente interesado en este proceso de seguridad, así que, por favor, eduque, no convierta esto en una discusión sobre ofuscación o chequeo periódicamente en base a una marca de tiempo.

Gracias


He estado haciendo un poco de decompilación y piratería durante un tiempo (no warez, pero mods y hacks sobre todo a las aplicaciones de Google y Android, siempre respetando las políticas de xda-developers).

Una vez que aprende a leer smali, es casi como leer el código original de Java (pero con mucho más LOC). Por lo tanto, cualquier código que agregue para verificar las claves se puede encontrar y eliminar o reemplazar. Ni siquiera necesita volver a compilar cada vez para eliminar más de uno (algunas búsquedas hacen milagros para encontrar fragmentos de código similares) y, aunque se necesiten ciclos de compilación / recompilación para encontrarlos, es cuestión de uno o dos minutos. para descompilar: todo está automatizado por apktool y aún más por apkmanager.

Habiendo dicho eso, mi sugerencia es implementar algún tipo de tabla de puntuación en línea o similar, y cuando el usuario mira la tabla de puntaje en línea, puede verificar el código hash que implementó y compararlo con la cuenta de gmail asociada. De esa manera, puede informar el hack a google y enviar un desagradable mensaje al usuario del warez, explicando por qué es ilegal.

Por supuesto, podría implementarse un nuevo hack para eliminar la tabla de puntuación, pero eso reduciría el interés por el warez.

Buena suerte.

Actualizar

Después de investigar para responder a esta pregunta: Inyectando código en APK (realmente sobre el mecanismo Amazon DRM), puedo contar un poco sobre cómo Amazon está protegiendo las aplicaciones: incluye métodos para verificar la validez de la instalación en todas partes (puede ver un ejemplo) de cómo lo hacen en mi respuesta a esa pregunta). Esto hará que cualquier intento de hackear una aplicación no sea muy difícil, pero extremadamente tedioso. Creo que es un punto fuerte: los hackers no querrán pasar tanto tiempo haciendo tantas tareas repetitivas: no es desafiante y es aburrido . El principal defecto que veo en ese enfoque es la posibilidad de hackear la propia aplicación de Amazon para que siempre devuelva una respuesta válida, por supuesto. Pero, si mezcla sus cheques hash actuales con algún tipo de cheque en línea disperso entre sus métodos, creo que las posibilidades de que sean pirateadas se pueden reducir drásticamente.


La piratería siempre será un problema. En las grandes galletas, es mejor jugar este juego de Seguridad Aunque Oscuridad que los desarrolladores.


Los usuarios de Android simplemente van a aceptar el dolor de las telefónicas constantes. La única aplicación segura de Android es una aplicación de Android siempre conectada.

Esto se debe, en gran parte, a la negativa de Google de bloquear la instalación, como lo hizo Apple. En IOS tienes que hacer jailbreak al teléfono. En Android, puede cargar cualquier APK en un stock, instalación de fábrica.

Mantenga algo / la mayoría / todo su contenido en el servidor; entregarlo en trozos; valide la licencia / sesión en cada llamada.


Mi idea no es a prueba de piratas informáticos, pero podría eliminar parte del interés por piratear el juego.

Modelo Freemium

1) Haga que los primeros 5-10 niveles sean gratuitos para que las personas puedan aprender el juego y divertirse sin pagar. Less querrá piratear el primer nivel y el juego se extenderá aún más con el modelo Freemium.

Shareware / paquetes de niveles agrupados

2) Deje que parte de los niveles del juego o la lógica permanezcan en línea. P.ej. Al alcanzar el nivel 5 o 10 o 15, luego descarga pequeñas partes para el juego, y cada vez envía el registro de progreso del juego y valídelo contra posibles valores + códigos de hash. Esto podría permitir el cierre automático de cuentas pirateadas.

Stealth tramposo protección

3) También podría contar "banderas de advertencia pequeñas" que coloca en el juego. No compruebe la "validación" al principio, no construya estas banderas en la lógica del juego. No rompa el juego, porque entonces nadie lo buscará. Luego, cuando el usuario llegue al final del monstruo de nivel, verifique si hay indicadores de advertencia registrados. Estos no aparecerán dentro del juego, por lo que el usuario no enterado con una edición pirateada podría estar jugando durante horas / días y darse cuenta de repente de que no pudo terminar el juego o pasar al siguiente nivel, porque el juego tenía un "error". Lo que el usuario no sabía era que este error solo se produce en clientes pirateados.

Conclusión

Sé más inteligente que las galletas. Insínelos a pensar que el trabajo ya está hecho. Haga una copia de protección y sepa que los crackers más avanzados podrán eliminarla. Pero probablemente no quieran jugar 50 niveles para comprobar si el crack también funciona.

Una vez que se den cuenta de este problema, podrían comenzar a romperlo también. Pero si divide el juego en paquetes de nivel, aún puede validar entre cada paquete de descarga. Entonces, una vez que reciba datos de hash de clientes pirateados, ejecute una excepción y bloquee el juego en el cliente. Vaya, el juego se bloqueó. No cuentes porque está pirateado. Un error del programa puede suceder. :-)

De nuevo, no es una prueba de hackers. Pero podría molestarlos lo suficiente como para pasar al siguiente juego. Por último, también podría poner actualizaciones regulares para el juego y solo la última versión debería poder "publicar los registros", etc. para que los usuarios activos tengan que actualizarse para mantenerse al tanto.


Posibilidad de que haya más programadores talentosos que USTEDES (se aplica a todos los programadores), es 100%. Y si eso es cierto, no puedes arreglar el pirateo. Pero puede gastar tanto tiempo y esfuerzo para quebrar.

Si quiere ganar dinero, necesita hacer una investigación sobre su grupo de usuarios objetivo y ciencia del comportamiento. Necesita hacer que los usuarios jueguen y traigan dinero nuevo, y eso es todo.

Además, lo has entendido mal. Los hackers son los miembros más activos de tu base de usuarios, solo te comportas de una manera que no pretendías.

Toma los juegos de Zynga en Facebook, por ejemplo, ¿crees que te piratean? - Claro, y alrededor de +100000 jugadores solo juegan, porque puedes usar bots, eso automatiza todo.

Al tener una botnet de usuarios real enorme, los jugadores de tipo archivador quieren jugar el juego, y si juegas, y parece genial, Avarage Joe también querrá jugar. Si juega Joe, es posible que sus amigos quieran jugar, y probablemente a ti no le importe nada, luego será mejor que su amigo, matando el tiempo o teniendo algo de lo que hablar. Es muy probable que los amigos de Avarage Joe estén dispuestos a pagar para ser mejores que Joe, pero a usted le gustaría invertir en algo que los haga ser mejores.

Además, si el valor real es jugar el juego de forma gratuita, los usuarios que usen la versión pirateada gratis probablemente nunca lo habrán pagado. Pero tú eres Avarage Joes y sus amigos podrían hacerlo. Así que este es el comercial más económico que puedes tener. Si quieres ganar dinero con tu gran base de usuarios, simplemente crea nuevas versiones del juego con pequeños cambios en niveles y gráficos.


Qué pregunta tan interesante e inquietante. :-) Como ejercicio, puede intentar liberar una aplicación a través de Amazon; ellos tienen su propio mecanismo de DRM; Me pregunto si funciona mejor que ProGuard ...


Sé que no estás realmente en la ofuscación, pero realmente necesito reaccionar a esto:

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.

ProGuard es muy confiable en mi experiencia, y esto a pesar de que utilizo un par de funciones avanzadas como AIDL y algunos códigos nativos que llaman al método Java. Lleva un poco de trabajo leer la documentación y hacer las cosas correctamente, pero una vez que estás ProGuard es extremadamente confiable y también optimiza su aplicación.

Los trucos personalizados de seguridad / criptografía son buenos, pero sin ofuscación es como arrojar una piedra al agua en mi humilde opinión.

He usado ProGuard en producción durante muchos meses, y simplemente funciona sin problemas.

Si le interesa aprender, lea atentamente el manual de ProGuard, experimente e inspeccione sus registros de salida.


Será increíblemente difícil inhibir este tipo de comportamiento. Cualquier cosa que se maneje en el lado del cliente se puede piratear usando descompilación y modding de APK, edición de memoria con software como Game Guardian ect.

La única forma en que puedo ver cómo evitarlo parcialmente sería hacer un juego en línea. O tiene ciertas funciones manejadas en línea. O si la encriptación antimanipulación como denuvo está disponible para Android / iOS.



Uno de los elementos clave en mi opinión es extender el código para que no esté todo en un solo lugar. Si tiene una función llamada LicenseChecker.checkLicense () que recupera la licencia y la verifica, puede estar seguro de que se desactivará rápidamente.

La única ventaja que tiene es que los crackers no pueden ver los comentarios de su código (y, si se ofusca, nombres de método / variable), así que procure algo extraño. En el onCreate () de una actividad, obtienes la identificación de la licencia. En onResume (), obtienes otro valor para verificarlo. Tal vez crear un hilo y hacer algunos controles allí. Y luego, alguna otra pieza irrelevante de código (tal vez el control del jugador) puede recoger el valor y compararlo y almacenar el resultado en alguna parte. Luego, otras tres piezas irrelevantes de código verificarán independientemente ese valor y deshabilitarán tu aplicación si no coincide.

Ahora debo decir por adelantado que esto puede causarle dolor de cabeza a usted mismo: obviamente, el código sucio y abarrotado es más difícil de depurar y propenso a causar errores. En el peor de los casos, crea falsos positivos en las aplicaciones legítimamente compradas.

Y, por supuesto, todo puede ser de ingeniería inversa: una vez que los crackers encuentran el lugar donde la aplicación está deshabilitada, rastrean el valor desde el que se lee. Luego podrían rastrear dónde se está almacenando, y rastrear eso de vuelta ... o, mucho más fácil, pueden simplemente desactivar la verificación final (por lo que recomendé 3 lugares diferentes, todos los desencadenantes se retrasaron). La seguridad es tan buena como el eslabón más débil.

No podrás detener la piratería. Su mejor opción es retrasar la difusión de una copia pirateada hasta que la publicidad inicial sobre su aplicación se haya calmado.