Encriptación de datos
(Como proteger tu juego para que no sea alterado)




Este apartado trata sobre la posibilidad que ofrece Entidad 3D para encriptar ciertos datos de tu juego para que no puedan ser vistos ni manipulados desde fuera del juego.

También habla sobre algunas medidas que puedes tomar para dificultar, en la medida de lo posible, que el jugador pueda hacer trampas en tu juego.



Puntos vulnerables a tener en cuenta y sus soluciones:


PUNTO 1:

Los ficheros de comandos .INI y los ficheros de diálogos .DLG que has creado en la carpeta 'comandos', son completamente visibles y modificables por el jugador.


Hack:

El jugador puede aprovechar esto para cambiar o eliminar comandos de los ficheros .INI para alterar el comportamiento original de tu juego.

Mirando los .DLG o los propios .INI puede ver las respuestas que tiene que dar en el juego o los diálogos de todos los personajes.


Solución:

Convierte todos tus ficheros .INI y .DLG de tu juego que estén en la carpeta 'comandos' a ficheros encriptados .INI.ENC y .DLG.ENC.

Evidentemente esto lo debes realizar cuando vayas a distribuir tu juego y cuando creas que tus ficheros .INI y .DLG ya no sufrirán más modificaciones. De todas formas el método de crear ficheros .ENC no es destructivo ya que no altera para nada los .INI o .DLG originales sino que crea nuevos ficheros .ENC encriptados.

Para crear estos ficheros .ENC utilizaremos el propio Entidad 3D. Deberás realizar estos pasos para crearlos:

- Borra todo el contenido de la carpeta 'encriptados' de Entidad 3D

- Copia todos los ficheros .INI y .DLG que usa tu juego de la carpeta 'comandos' a la carpeta 'encriptados'.

- Ejecuta tu juego de manera normal.

- Sal de tu juego de manera normal.

- Mira el contenido de la carpeta 'encriptados', verás que han aparecido tantos ficheros .ENC como ficheros habías copiado. Estos ficheros son tus ficheros . INI y .DLG originales pero en su versión encriptada, si abres alguno de ellos podrás observar que no se entiende absolutamente nada.

- Todos los ficheros .ENC que se han creado en la carpeta 'encriptados' cópialos a la carpeta 'comandos'.

Como ves, en ningún momento del proceso de creación de los ficheros encriptados, vas a perder el contenido original de tus ficheros .INI o .DLG.

- A continuación borra todo el contenido de la carpeta 'encriptados'

- ¿ Ya está ?, pues si ejecutas tu juego en este punto el programa seguirá usando los ficheros .INI y .DLG originales sin encriptar, aunque en la carpeta 'comandos' estén sus equivalentes .ENC encriptados. Entonces .. ¿ cómo se hace para que el juego sólo use los ficheros .ENC ?. Pues muy sencillo: en la entidad 'Configuracion' (que seguramente habrás añadido en el primer nivel de tu juego) pon a 'True' el parámetro 'UsarFicherosEnc'.

- No tienes más que recompilar tu nivel y volver a ejecutar tu juego, en ese momento tu juego solamente usará los fichero .ENC. Haz la prueba moviendo los ficheros .INI y .DLG que usa tu juego a otra carpeta provisional, y digo mover porque no se te ocurra borrar los ficheros para hacer esta prueba.

- Eso si, en la copia de la versión definitiva que prepares para la distribución de tu juego, borra todos los .INI y .DLG de la carpeta 'comandos' , ya que el juego ya no los necesitará para nada al disponer de los ficheros encriptados .ENC




PUNTO 2:

El jugador puede modificar tu fichero 'autonivel.ini' o el fichero .BAT que da comienzo a tu juego empezando por el primer nivel.


Hack:

El jugador puede usar esto para cambiar el nombre del fichero .BSP que se lanza para evitar entrar en el juego por el primer nivel y de esta forma jugar al resto niveles sin seguir el orden correcto.


Solución:

Utiliza los comandos 'SETCLAVEJUEGO' y 'CHKCLAVEJUEGO' en ficheros de comandos .INI de tu juego.




PUNTO 3:

El jugador puede modificar los ficheros '.dat' de partidas salvadas que se guardan en la carpeta 'partidas'.


Hack:

El jugador puede alterar estos ficheros para ponerse más vidas y más dinero, que conseguiría posteriormente utilizando la opción de cargar partida dentro del juego.


Solución:

En realidad no debes hacer nada para tener un mínimo de protección para estos ficheros, ya que el programa chequea la integridad de estos ficheros cada vez que se usa la opción de cargar partida, aunque para una mayor seguridad se recomienda que en tu juego uses el comando que se cita en el punto 2 (SETCLAVEJUEGO) ya que si el programa dispone de una clave de juego aumentará la seguridad de estos ficheros '.dat' de partidas salvadas.




PUNTO 4:

El jugador puede abrir la consola del juego y usar los comandos que permiten hacer trampas.


Hack:

Estos comandos permiten hacer inmune al jugador, darle todas las armas, munición infinita e incluso hacer que los enemigos no le disparen.


Solución:

En la entidad 'Configuracion' (que seguramente habrás añadido en el primer nivel de tu juego) pon a 'True' el parámetro 'UsarFicherosEnc', aunque seguramente ya lo tendrás así si tu juego usa los ficheros encriptados .enc




PUNTO 5:

Los ficheros .BSP que forman los niveles de tu juego contienen datos que podrían ser manipulados.


Hack:

El jugador podría modificar estos ficheros .BSP para asignarse más dinero, vidas o alterar los nombres de los ficheros .INI que se utilizan en el nivel.


Solución:

Crea unos ficheros de control '.bsp.chk' por cada fichero '.BSP' que tenga tu nivel. Cuando tu juego esté funcionando con el parámetro 'UsarFicherosEnc' a 'True' de la entidad 'Configuracion', se comprobarán unos códigos que contiene el fichero '.bsp.chk' con otros que contiene el fichero .BSP. En caso de que no coincidan, el programa dejará de funcionar.

Para crear estos ficheros .CHK deberás realizar estos pasos:

- Borra todo el contenido de la carpeta 'encriptados'

- Copia todos los ficheros de nivel .BSP que utilice tu juego, de la carpeta 'levels' a la carpeta 'encriptados'.

- Ejecuta tu juego pero añadiendo el parámetro -clavejuego clave, por ejemplo con esta línea:

Entidad3d.exe -name Jugador -map tunivel -PickMode -clavejuego Nemesis

Eso para crear los ficheros '.chk' usando por ejemplo la clave de juego Nemesis.

Esta misma clave es la que debes utilizar en los comandos 'SETCLAVEJUEGO' y 'CHKCLAVEJUEGO' que habrás añadido en tus ficheros de comandos .INI

- Pulsa 'Cancelar' en la selección del 'driver' de pantalla para salir del programa.

- Mira el contenido de la carpeta 'encriptados', verás que han aparecido tantos ficheros '.bsp.chk' como ficheros .BSP copiaste.

- Todos los ficheros '.bsp.chk' que se han creado en la carpeta 'encriptados' cópialos a la carpeta 'levels'.

- A continuación borra todo el contenido de la carpeta 'encriptados'

- A partir de este momento cada vez que ejecutes tu juego con 'UsarFicherosEnc' a 'True', el programa buscará ficheros '.bsp.chk' en la carpeta 'levels' para verificar el contenido de los ficheros de nivel .BSP.

Nota: El parámetro -clavejuego sólo es necesario a la hora de crear los ficheros '.bsp.chk', no para lanzar tu juego de forma normal, ya sea una versión protegida o no.




Todos estos procesos no garantizan al 100% que tu juego no sea desprotegido usando diversas técnicas de 'cracking' o explotando vulnerabilidades en el sistema.

De todas formas piensa que estos procesos ofrecen un mínimo de complejidad frente a la mayoría de la gente que pueda estar interesada en estudiar la manera de destripar tu juego para hacer trampas.