Se ha denunciado esta presentación.

JASYP2018 - Destripando juegos: protecciones anti ROM Hacking

0

Compartir

Cargando en…3
×
1 de 49
1 de 49

JASYP2018 - Destripando juegos: protecciones anti ROM Hacking

0

Compartir

Descargar para leer sin conexión

El ROM Hacking, ingeniería inversa en videojuegos, es un tema que cada vez más estudios de videojuegos dedican recursos para evitar. El objetivo: proteger los textos para evitar fan-traducciones, los sprites para que sean reutilizados en otros juegos, los mapas para que se hagan mods o las comunicaciones inalámbricas para hacer trampas. Se ofrecerá un resumen de la situación actual y de los algoritmos descubiertos (así como del procedimiento) en algunos videojuegos conocidos.

El ROM Hacking, ingeniería inversa en videojuegos, es un tema que cada vez más estudios de videojuegos dedican recursos para evitar. El objetivo: proteger los textos para evitar fan-traducciones, los sprites para que sean reutilizados en otros juegos, los mapas para que se hagan mods o las comunicaciones inalámbricas para hacer trampas. Se ofrecerá un resumen de la situación actual y de los algoritmos descubiertos (así como del procedimiento) en algunos videojuegos conocidos.

Más Contenido Relacionado

Audiolibros relacionados

Gratis con una prueba de 14 días de Scribd

Ver todo

JASYP2018 - Destripando juegos: protecciones anti ROM Hacking

  1. 1. Destripando juegos Protecciones anti ROM Hacking @pleonex benito356@gmail.com JASyP ‘18
  2. 2. ¿ROM Hacking?
  3. 3. ¿Ni no kuni para Nintendo DS?
  4. 4. ¿Fan-traducción de videojuegos?
  5. 5. @pleonex en el “mundo real” ○ Benito Palacios ○ Graduado en teleco en la UGR ○ Software Engineer
  6. 6. @pleonex en el “mundillo”
  7. 7. @pleonex en el “mundillo” ○ @GradienWords ■ Ni no kuni: El mago de las tinieblas (Nintendo DS)
  8. 8. @pleonex en el “mundillo” ○ @GradienWords ■ Ni no kuni: El mago de las tinieblas (Nintendo DS) ■ Xenosaga I (PS 2, en proceso) ■ +3 proyectos secretos en proceso
  9. 9. ¿ROM Hacking?
  10. 10. ROM Hacking: Ingeniería inversa en videojuegos
  11. 11. ROM Hacking
  12. 12. ROM Hacking 1. Cabecera estándar a. Magic stamp b. Tamaño fichero c. Reservado d. Puntero de datos 2. Cabecera DIB a. Tamaño DIB b. Ancho c. Alto d. Planos de color e. BPP 3. Paleta 4. Píxeles
  13. 13. ROM Hacking
  14. 14. Rom-hackers
  15. 15. Marvel: Infinity War is the most ambitious crossover event in history. Me:
  16. 16. ¿Pá’qué?
  17. 17. Game Resources ● Extraer backgrounds, sprites, música, tipografías ● Reutilización en proyectos personales, y comics ● https://www.spriters-resource.com/
  18. 18. Hobby
  19. 19. Hobby
  20. 20. Hobby
  21. 21. Hobby
  22. 22. Hobby
  23. 23. Hobby
  24. 24. Hobby
  25. 25. Mods
  26. 26. Fan traducciones Traducciones no oficiales de juegos ○ De fans a fans Parches gratuitos sobre copias originales del juego TraduSquare: comunidad de fan-traducciones al español
  27. 27. Fan traducciones Datos de juegos de Nintendo DS (fuente Wikipedia) ● Total: 1842 ● Por regiones ○ Japón: 865 (47.0 %) (-977) ○ EEUU: 1274 (69.2 %) (-568) ○ Europa: 1172 (63.6 %) (-670) ● En todas las regiones: 386 (20.1 %) ● Solo en Japón: 383 (20.8 %) ● Solo en EEUU: 206 (11.1 %)
  28. 28. ¿Proteger juegos?
  29. 29. Mods
  30. 30. Un gran poder... … conlleva una gran responsabilidad
  31. 31. Caso Pokémon Conquest Eventos oficiales ● 17 marzo: lanzamiento Japón ● 4 abril: anuncia lanzamiento en EEUU ● 18 junio: lanzamiento EEUU ● 27 julio: lanzamiento en Europa, solo en UK Eventos extraoficiales ● 24 marzo: 3 parches → Pokémons, movimientos, items ● 1 abril: primeras horas de historia traducidas
  32. 32. ¿Cómo se protege un videojuego?
  33. 33. Cifrado en textos: Pokémon Perla/Diamante
  34. 34. Cifrado en textos: Pokémon Perla/Diamante
  35. 35. Cifrado en textos: Pokémon Perla/Diamante
  36. 36. Cifrado en textos: Pokémon Perla/Diamante ushort clave = 0x91BD3 * (num + 1); for (int i = 0; i < data.Length; i ++) { data[i] = data[i] ^ clave ; clave = (ushort)(clave + 0x493D); } Cifrado XOR sobre todo el bloque de datos ● Clave diferente para cada bloque y dinámica Tabla de codificación propia para el texto
  37. 37. Cifrado en textos: Pokémon Conquest Cifrado XOR en el archivo const string Key = "MsgLinker Ver1.00"; for (int i = 0; i < data.Length; i++) data[i] ^= (byte)Key[i % Key.Length];
  38. 38. Cifrado en textos: Ni no kuni ● 99% de los textos están sin cifrado / ofuscación ● Cifrado en 4 archivos con nombres de: ○ Objetos ○ Monstruos (únimos) ○ Ataques
  39. 39. Cifrado en textos: Ni no kuni NOT
  40. 40. Tablas de codificación: Super Mario 64 DS 00=0 01=1 02=2 03=3 04=4 05=5 06=6 07=7 08=8 09=9 0A=A 0B=B 0C=C 0D=D 0E=E ... ... 44=x 45=y 46=z 47=- 48=. 49=' 4A=: 4B=; 4C=& 4D= 4E=& 4F=/ BD=í FD=n FF=<End> 0E 38 4D 13 0A 1C 22 E L J A S Y
  41. 41. Cifrado en imágenes: Pokémon Perla/Diamante Formato de archivo estándar: NCGR + NCLR Bloque de datos cifrado con XOR uint clave = data[data.Length - 1]; for (int i = data.Length - 1; i >= 0; i--){ data[i] = data[i] ^ clave; clave = (uint)(clave * 0x41C64E6D + 0x6073); }
  42. 42. Ofuscación de archivos: Pokémon Pokémon Perla Pokémon HeartGold
  43. 43. Integridad de partidas: Ni no kuni 1. Primeros 16-bits: 00 28 2. Últimos 8 byte: 0B 3F A5 84 EC 32 9A 7D 3. SHA-1 sobre el fichero a. Pero antes... en 0xC5EC se escribe 6E 6B 6E 6E son las consonantes del juego ‘nnkn’ b. Después vuelve a poner a 00 esos bytes c. Comprueba el hash con el almacenado en el fichero
  44. 44. Comunicaciones inalámbricas: Nintendo DS Protocolos comunicación ● HTTP con NAS ● HTTPS con servidor DLC ● Certificados en el juego: ○ Nintendo ○ VeriSign ○ CyberTrust ○ Thawte ○ GlobalSign
  45. 45. Comunicaciones inalámbricas: Nintendo DS ¡El servidor de DLC acepta conexiones HTTP! Podemos reemplazar las URLs del juego de HTTPS a HTTP
  46. 46. DLC: Ni no kuni ● Comunicación HTTPS ○ Cifrado RC4 (TLS) ○ TCP: checksum ● DLC ○ Cifrado RC4 (contraseña en juego) ○ Integridad de archivo CRC32
  47. 47. ¿Seguridad en videojuegos?
  48. 48. ● Objetivo: retrasar o desmotivar modificaciones ○ Estas técnicas no evitan la piratería ● Mejores técnicas: ofuscación y algoritmos nuevos ● Tenemos el ensamblador, tenemos el control
  49. 49. @pleonex

×