¿Cómo detectan los juegos de PC / Mac la piratería?

27

Hace poco estuve leyendo un artículo sobre formas inteligentes en que los programadores han protegido sus juegos de los piratas, como los creadores de Game Dev Tycoon . Esto me hizo sentir curiosidad: ¿cómo detectan que la copia del juego en ejecución es, de hecho, una versión pirateada a nivel técnico? La respuesta más cercana que pude encontrar a través de algunas investigaciones fue cómo los cartuchos SNES pueden detectar si están pirateados , pero esa táctica obviamente no se aplica a las PC.

caseif
fuente
1
Creo que esta pregunta es demasiado amplia. Los juegos detectan la piratería de varias formas, y muchos de ellos son específicos de cada juego.
MichaelHouse
10
@ Byte56 Estoy de acuerdo en que la pregunta es bastante amplia, pero creo que sigue siendo una buena pregunta. Una respuesta ideal podría proporcionar un método común de detección de piratería y quizás enlaces a fuentes que explican otras soluciones conocidas.
kevintodisco
2
Probablemente, la mejor manera posible de evitar la piratería es hacer lo que Blizzard ha hecho por Diablo III: el cliente hace el renderizado y demás, pero la mayoría de las reglas y lógica del juego solo se almacenan en los servidores de Blizzard (por ejemplo: cuánto oro recibes cuando abres un cofre en la habitación X con el jugador en el nivel Y). No es posible vencer esto a menos que haya robado los archivos binarios / fuente de Blizzard para la parte del servidor (que es muy poco probable). Algunas personas han creado emuladores, pero debido a que no son las mismas reglas (son aproximaciones), no ofrece la misma experiencia de juego.
tigrou

Respuestas:

53

Primero lo primero: no hay forma de que una computadora sepa si un archivo está pirateado o no. La piratería es un término legal / moral y, por lo tanto, no tiene ningún significado en un archivo, que solo se compone de unos y ceros.

Dicho esto, la prevención de la piratería y las contramedidas generalmente se centran en descubrir si un usuario tiene o no algo (generalmente un objeto) que solo se puede obtener si se compró una copia del juego, y hace que sea difícil de duplicar. Hay muchas formas de hacer esto, cada una con ventajas y defectos. Mencionaré algunos:

  • Los primeros juegos pedían a los usuarios que ingresaran una palabra del manual del juego, que solo debería obtener si compró una caja de juegos. Sin embargo, una fotocopiadora o un escáner vence fácilmente esta técnica.

  • Más recientemente, las verificaciones de medios son más comunes. La idea es que requiera que el CD del juego esté en la unidad para que el juego se ejecute. Para implementar esto, por ejemplo, puede acceder a archivos de datos críticos desde el CD sin los cuales el juego no puede ejecutarse, o simplemente verificar la existencia de un archivo en el CD. Esto funcionó bastante bien cuando los CD eran difíciles de duplicar, pero las copiadoras de CD y, más recientemente, los emuladores de unidades pueden usarse para derrotar fácilmente esta técnica.

  • Sin embargo, las copias de CD no son perfectas, por lo que muchas otras técnicas se centran en detectar si el CD es el CD original o una copia. Para implementar esto, un juego puede verificar si hay elementos no estándar que se insertan en el disco del juego durante el tiempo de impresión, pero no pueden ser replicados fácil y confiablemente por una grabadora de CD, en un CD-R. Algunas formas comunes de hacer esto son:

    • Crear archivos "fantasmas" ficticios en el CD durante la masterización, a los que no se puede acceder desde el sistema de archivos del CD, pero existen, y se pueden leer si sabe dónde encontrarlos. Estos datos están ausentes en las copias de disco archivo por archivo. Sin embargo, al copiar toda la imagen del disco se copiarán estos archivos.

    • Otra forma es insertar errores intencionalmente en el disco. Los CD contienen códigos de corrección de errores. Al insertar errores en los datos, que un lector de discos puede corregir de manera transparente, el disco funcionará normalmente, pero los errores no se copiarán en el CD-R. Al buscar estos errores intencionales, un juego puede considerar que un CD es una copia original impresa. Sin embargo, las copias de la imagen de disco RAW lo superan

    • Insertar sectores gemelos, con la misma dirección pero datos diferentes arrojará resultados diferentes cuando se buscan datos hacia adelante y hacia atrás. Es posible verificar la existencia de esto, y duplicar un CD con estos sectores gemelos es muy difícil.

    • Medición de la posición real de los hoyos en el CD. Una vez más, duplicar un CD con los hoyos en las mismas posiciones es muy difícil.

    Sin embargo, muchos emuladores de CD, como Daemon Tools o Alcohol 120%, pueden emular estas características. Debido a esto, muchos editores eligen incluir un paso de detección de emulador de CD y evitar que el juego se ejecute si se detecta un emulador. Sin embargo, la implementación de un detector de emulador está fuera del alcance de esta respuesta.

  • En lugar de, o además de buscar un CD físico, un juego puede solicitar al usuario que ingrese algunos datos, como una clave de producto . Algunas formas de usar claves de producto son:

    • Comprobación de características matemáticas en la clave. Sin embargo, esto no evita la duplicación de claves, y si se descubre el algoritmo de verificación o se aplica ingeniería inversa, un pirata puede crear nuevas claves a voluntad que parecerán legítimas para el juego. El software que crea claves a voluntad se llama " keygen ".

    • Generando un hash basado en el hardware del usuario, envíe este hash y la clave del producto (generalmente una combinación, llamada "clave de instalación") a un servidor propiedad de la compañía de juegos y, en función del hash y el serial, cree una clave de activación . Utilizando métodos numéricos unidireccionales (como la aritmética modular, o algunos métodos con curvas elípticas), un juego puede ver si la clave de activación coincide con el código hash y serial, y solo se ejecuta si coinciden. Esta técnica se llama "activación".

    Con la activación, un servidor puede negarse a proporcionar claves de activación para múltiples hashes de hardware con el mismo código de serie. Debido a esto, incluso si el código de serie y la clave de activación se copian, la clave de activación no coincidirá y el juego no se ejecutará en otras computadoras.

Todas estas medidas están destinadas a determinar si el usuario posee o no una copia comprada del juego. Sin embargo, implementarlos requiere un código de programa que verifique esto. Es posible que un pirata modifique el código del juego para deshabilitar u omitir las comprobaciones en lugar de atacar los mecanismos de protección contra copia. El acto de modificar los binarios del juego para eliminar las comprobaciones antipiratería se denomina "cracking".

El craqueo puede consistir simplemente en desmontar el ejecutable del juego, encontrar el lugar donde se realizan las verificaciones relevantes, modificarlo para deshabilitar las verificaciones o ignorar los resultados y volver a armarlo. Algunas formas de contrarrestar las grietas son:

  • Comprobando el binario con algo de hash. Sin embargo, debe haber un programa que verifique el hash, que a su vez también se puede descifrar.

  • Cifrar el programa, o simplemente la rutina de verificación, y descifrarlo en tiempo de ejecución. Esto hace que el desmontaje sea más difícil, ya que implica uno o más pasos de descifrado adicionales. SI la clave de descifrado se incluye en el programa (como debe ser, porque sin él, el juego no se puede descifrar), entonces el pirata puede realizar ingeniería inversa del descifrado, encontrar la rutina y romper la protección de copia.

    Debido a esto, como editor de juegos, desea hacer que la clave sea lo más difícil de encontrar posible y, opcionalmente, hacer que el algoritmo de descifrado sea difícil de entender. Algunas formas de hacer que la clave sea difícil de encontrar son:

    • Obscurecerlo creándolo de formas extrañas. Esto simplemente ralentiza el proceso de craqueo.

    • Cree claves maestras por máquina similares a la protección en serie mencionada anteriormente.

    Sin embargo, independientemente del método que use para crear sus claves, las claves mismas estarán en la memoria mientras se realiza el descifrado. Los inspectores de memoria, depuradores y emuladores pueden ayudar a un pirata a encontrar y copiar la clave mientras está en la memoria. El espionaje de la memoria se puede atacar de varias maneras:

    • Tener un servicio privilegiado que detecta los accesos a la memoria en la región especificada y redirige el direccionamiento a otro lugar. Como esto requiere acceso de anillo 0, y los programas que hacen esto se usan más comúnmente para fines no tan legítimos , el software antivirus generalmente los bloquea. (esta es la razón por la cual muchos juegos y otro software piden desactivar la protección antivirus cuando se ejecutan). Escribir software que haga esto correctamente es extremadamente difícil y puede comprometer fácilmente la estabilidad y la seguridad del sistema operativo host. El escándalo XCP es un buen ejemplo de una implementación incorrecta de este método.

    • El hardware y los sistemas operativos modernos proporcionan algunas herramientas, como cortinas de memoria , rutas de medios seguras y módulos TP , para facilitar la creación de un programa que descifre los datos, a la vez que sea resistente a la inspección de la memoria.

Hay muchas más técnicas para atacar la piratería, que van desde lo trivial a lo esotérico. Desafortunadamente, es posible que todas estas técnicas no reconozcan una copia genuina, y generalmente son las técnicas más agresivas las que tienen mayores proporciones de falsos positivos.

Como editor de juegos, generalmente desea elegir un conjunto de técnicas cuyo costo de implementación, el tiempo esperado de craqueo y la relación de falsos positivos estén en línea con sus expectativas.

Es un error común pensar que la protección contra la piratería está destinada a ser completamente irrompible. La mayoría de las ventas de juegos ocurren en los primeros meses después del lanzamiento, por lo que un esquema de protección contra la piratería generalmente se considera efectivo si romperlo consume suficiente tiempo para que el editor del juego obtenga una gran cantidad de ganancias antes de que se rompa.

En cuanto a Game Dev Tycoon, no utilizaron ninguna tecnología antipiratería. Simplemente crearon una compilación "rota" y la distribuyeron a través de BitTorrent, como se indica al comienzo del artículo que mencionó.

Pijama Panda
fuente
1
Incluso teniendo una respuesta competitiva, necesito aclararme a su respuesta, una mejor presentación y obviamente más tiempo dedicado. Mejor cobertura técnica también, y debo decir que nunca escuché hablar de "cortinas de memoria, rutas de medios seguras y módulos TP". Que es eso ??
v.oddou
@ v.oddou: Estos son elementos que pueden usarse para DRM compatible con hardware. Un módulo TP es un chip de procesador criptográfico. Muchas computadoras modernas (2007 y posteriores) incluyen un TPM. Una cortina de memoria le permite crear secciones de memoria de solo escritura que no son legibles incluso para el sistema operativo, específicamente para almacenar claves para que las use el TPM. Una ruta de medios segura es un sistema en el que el contenido viaja cifrado de extremo a extremo (incluso hasta la pantalla). El uso de estas tecnologías correctamente está lejos de ser trivial, aunque ...
Panda pijama
Solo como un pequeño complemento, hay un gran artículo sobre la protección contra copia Spyro que analiza muchas de estas cosas aplicadas a un juego, junto con algunos fundamentos y una historia interesante: gamasutra.com/view/feature/3030/keeping_the_pirates_at_bay .php
leander
Esta respuesta es completamente errónea. youtube.com/watch?v=FVVx5WYmO2s Marcado para intervención del moderador.
Krythic
@Krythic, ¿qué tal si escribes el tuyo y luego?
Panda Pyjama
3

Es bastante fácil, solo tiene que ejecutar un MD5 o SHA256 en su propio ejecutable, luego, cuando detecta que la firma ha cambiado de lo que codificó en el binario después de construir la versión final, entonces está claro que alguien hackeó su ejecutable. Entonces, la mayoría de las empresas, ya no solo muestran una ventana emergente (era el caso antes) que dice "PE roto" o "virus detectado" y luego salen del juego, porque esto será contrarrestado muy rápido por los hackers. Debido a que el juego está en pausa en el bucle de mensajes del cuadro de diálogo, es inmediato ver por qué rama se colocó el cuadro de diálogo, y simplemente omita la rama cambiando el código en la verificación de condición.

Hoy en día, las empresas utilizan cambios muy sutiles en la jugabilidad, como multiplicar la vida de los monstruos para que el juego no se pueda jugar, o se integre de manera increíblemente inteligente en este juego de administración, donde administras una compañía de juegos y finalmente pierdes porque demasiados jugadores piratearon tu juego. Nice mise en abyme en este caso. A veces, solo recibe una bandera roja cargada en los servidores de la compañía, y cuando desea llamarlos para obtener ayuda, recibe un discurso o queda atrapado para revelar su identidad.

Pero esto es todo tema, la técnica es hashing. y estas comprobaciones pueden ejecutarse en muchos lugares del binario, de modo que si los hackers encuentran uno y lo borran, no es suficiente.

EDITAR: si solo copia el juego tal como está, puede funcionar si el juego no tiene ninguna medida antipiratería. Funcionaba con juegos muy antiguos, pre grabadoras de CD. Por eso, la mayoría de las veces, el juego debe instalarse para ejecutarse, no solo la carpeta de instalación copiada. Esto implica archivos ocultos colocados un poco en todas partes del sistema y claves de registro. El juego verifica la presencia de estas cosas, que solo pueden ser creadas por el instalador. Y el instalador solo puede ejecutarse desde el CD, que no es copiable debido a bits erráticos que no respetan el sistema de código de corrección de errores en los primeros bytes del disco, que mata a la mayoría de los controladores del reproductor de CD. Algunos softwares de copia, como nero of alcohol, le proponen ignorar los errores, pero lo que queman es una copia corregida, el instalador lo detecta y listo.

EDIT2:

P: ¿cómo hacer un hash de un archivo y luego insertar el hash en el archivo que cambia el hash?

@ Byte56: Maldición, estamos recibiendo comentarios inteligentes aquí :) Sí, es una paradoja y no se puede resolver. Por lo tanto, el hash debe hacerse por parte del binario que no contiene el hash. Y el código de verificación tiene que saber eso, para excluir esa zona cuando se realiza el hashing para autoverificarse. He visto personas que usan etiquetas, como ~~ #### [poner hash aquí] #### ~~ para encerrar su hash y hacer la exclusión. Pero tiene la falla de ser fácil de detectar para los piratas informáticos, por lo que el hash debe ser codificado y dispersado en múltiples ubicaciones. Incluso encriptado por qué no, y la misma operación de camuflaje va a almacenar la clave privada.

v.oddou
fuente
¿Qué pasa si los archivos del juego se copian tal cual? ¿No se validará el hash en este caso?
Panda Pyjama
@PandaPajama: excelente comentario. Estoy haciendo una edición.
v.oddou
¿Cómo lidian con el hash de un ejecutable y luego la codificación de ese hash en el ejecutable, cambiando así el hash?
MichaelHouse
@ Byte56: editado de nuevo :)
v.oddou
@MickLH: Tengo que decir que me gustó su respuesta porque estoy de acuerdo con que la experiencia debería hacer que las personas naturalmente den dinero por asombro. Lástima que realmente no respondiera la pregunta y te votaron negativamente (naturalmente, se podría decir). Estás siendo demasiado absoluto en la clave privada. Esta clave privada no vale más que el cifrado hash, no tiene un gran valor como, por ejemplo, la base de datos de tarjetas de crédito. Pero si insiste, la suma de verificación podría enviarse a la red para verificar el servidor. Pero la seguridad es tan fuerte como su punto más débil, y esto tiene un grave defecto, un hacker
v.oddou
-5

no pueden simplemente poner una partición ext en un juego de mac

Mac no puede leer ext

Alguien
fuente
Si se necesitaba un archivo en la partición, el juego no podría ejecutarse. Si únicamente la existencia de la partición fuera "prueba" de que era una copia legítima, sería INCREÍBLEMENTE fácil de replicar.
Jesse Williams