SlideShare une entreprise Scribd logo
1  sur  49
Télécharger pour lire hors ligne
Destripando juegos
Protecciones anti ROM Hacking
@pleonex
benito356@gmail.com
JASyP ‘18
¿ROM Hacking?
¿Ni no kuni
para Nintendo DS?
¿Fan-traducción de
videojuegos?
@pleonex en el “mundo real”
○ Benito Palacios
○ Graduado en teleco en la UGR
○ Software Engineer
@pleonex en el “mundillo”
@pleonex en el “mundillo”
○ @GradienWords
■ Ni no kuni: El mago de las tinieblas
(Nintendo DS)
@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
¿ROM Hacking?
ROM Hacking: Ingeniería inversa en videojuegos
ROM Hacking
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
ROM Hacking
Rom-hackers
Marvel: Infinity War is the most ambitious crossover event in history.
Me:
¿Pá’qué?
Game Resources
● Extraer backgrounds, sprites, música,
tipografías
● Reutilización en proyectos personales, y
comics
● https://www.spriters-resource.com/
Hobby
Hobby
Hobby
Hobby
Hobby
Hobby
Hobby
Mods
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
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 %)
¿Proteger juegos?
Mods
Un gran poder...
… conlleva una gran responsabilidad
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
¿Cómo se protege
un videojuego?
Cifrado en textos: Pokémon Perla/Diamante
Cifrado en textos: Pokémon Perla/Diamante
Cifrado en textos: Pokémon Perla/Diamante
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
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];
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
Cifrado en textos: Ni no kuni
NOT
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
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);
}
Ofuscación de archivos: Pokémon
Pokémon Perla Pokémon HeartGold
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
Comunicaciones inalámbricas: Nintendo DS
Protocolos comunicación
● HTTP con NAS
● HTTPS con servidor DLC
● Certificados en el juego:
○ Nintendo
○ VeriSign
○ CyberTrust
○ Thawte
○ GlobalSign
Comunicaciones inalámbricas: Nintendo DS
¡El servidor de DLC acepta conexiones HTTP!
Podemos reemplazar las URLs del juego de HTTPS a HTTP
DLC: Ni no kuni
● Comunicación HTTPS
○ Cifrado RC4 (TLS)
○ TCP: checksum
● DLC
○ Cifrado RC4 (contraseña en juego)
○ Integridad de archivo CRC32
¿Seguridad en
videojuegos?
● 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
@pleonex

Contenu connexe

Similaire à JASYP2018 - Destripando juegos: protecciones anti ROM Hacking

Clase 9 sistemas
Clase 9 sistemasClase 9 sistemas
Clase 9 sistemasMguel
 
Criptografia convencional
Criptografia convencionalCriptografia convencional
Criptografia convencionalluisantonio222
 
Juegos de play station presentación final
Juegos de play station    presentación finalJuegos de play station    presentación final
Juegos de play station presentación finalAlbaPic
 
Producción y documentación
Producción y documentaciónProducción y documentación
Producción y documentaciónFederico Peinado
 
Geovanny ps vita
Geovanny ps vitaGeovanny ps vita
Geovanny ps vitageovanny13
 
PS3 VS PS4-García_Iker_Guzman_Valentin.pdf
PS3 VS PS4-García_Iker_Guzman_Valentin.pdfPS3 VS PS4-García_Iker_Guzman_Valentin.pdf
PS3 VS PS4-García_Iker_Guzman_Valentin.pdfvguzman1
 
Los videojuegos2
Los videojuegos2Los videojuegos2
Los videojuegos2jorge
 
Nintendo 3 ds
Nintendo 3 dsNintendo 3 ds
Nintendo 3 dsYhos Hyde
 
Experiencias desarrollando mi primer videojuego - Techne18
Experiencias desarrollando mi primer videojuego - Techne18Experiencias desarrollando mi primer videojuego - Techne18
Experiencias desarrollando mi primer videojuego - Techne18Vanessa Galcera
 
Play Station2 (Ps2)[1]Mejorado
Play Station2 (Ps2)[1]MejoradoPlay Station2 (Ps2)[1]Mejorado
Play Station2 (Ps2)[1]Mejoradojjorduz
 
C03 unc cifra_moderna_v2015
C03 unc cifra_moderna_v2015C03 unc cifra_moderna_v2015
C03 unc cifra_moderna_v2015Pedro Cafre
 
Presentacion tfm adrian_alonso_gonzalez-light
Presentacion tfm adrian_alonso_gonzalez-lightPresentacion tfm adrian_alonso_gonzalez-light
Presentacion tfm adrian_alonso_gonzalez-lightAdrián Alonso González
 

Similaire à JASYP2018 - Destripando juegos: protecciones anti ROM Hacking (18)

Clase 9 sistemas
Clase 9 sistemasClase 9 sistemas
Clase 9 sistemas
 
Criptografia convencional
Criptografia convencionalCriptografia convencional
Criptografia convencional
 
analisis videojuego Almada
analisis videojuego Almadaanalisis videojuego Almada
analisis videojuego Almada
 
Mejores consolas
Mejores consolasMejores consolas
Mejores consolas
 
Juegos de play station presentación final
Juegos de play station    presentación finalJuegos de play station    presentación final
Juegos de play station presentación final
 
Videojuegos
VideojuegosVideojuegos
Videojuegos
 
Producción y documentación
Producción y documentaciónProducción y documentación
Producción y documentación
 
Geovanny ps vita
Geovanny ps vitaGeovanny ps vita
Geovanny ps vita
 
PS3 VS PS4-García_Iker_Guzman_Valentin.pdf
PS3 VS PS4-García_Iker_Guzman_Valentin.pdfPS3 VS PS4-García_Iker_Guzman_Valentin.pdf
PS3 VS PS4-García_Iker_Guzman_Valentin.pdf
 
Los videojuegos2
Los videojuegos2Los videojuegos2
Los videojuegos2
 
Nintendo 3 ds
Nintendo 3 dsNintendo 3 ds
Nintendo 3 ds
 
Experiencias desarrollando mi primer videojuego - Techne18
Experiencias desarrollando mi primer videojuego - Techne18Experiencias desarrollando mi primer videojuego - Techne18
Experiencias desarrollando mi primer videojuego - Techne18
 
Play Station2 (Ps2)[1]Mejorado
Play Station2 (Ps2)[1]MejoradoPlay Station2 (Ps2)[1]Mejorado
Play Station2 (Ps2)[1]Mejorado
 
TAREA TECNOLOGIA.docx
TAREA TECNOLOGIA.docxTAREA TECNOLOGIA.docx
TAREA TECNOLOGIA.docx
 
Play station
Play stationPlay station
Play station
 
02 vdj egdc_luis villegas
02 vdj egdc_luis villegas 02 vdj egdc_luis villegas
02 vdj egdc_luis villegas
 
C03 unc cifra_moderna_v2015
C03 unc cifra_moderna_v2015C03 unc cifra_moderna_v2015
C03 unc cifra_moderna_v2015
 
Presentacion tfm adrian_alonso_gonzalez-light
Presentacion tfm adrian_alonso_gonzalez-lightPresentacion tfm adrian_alonso_gonzalez-light
Presentacion tfm adrian_alonso_gonzalez-light
 

Plus de Benito Palacios Sánchez

Plus de Benito Palacios Sánchez (6)

[IEEEsbUGR] Introducción al ROM Hacking
[IEEEsbUGR] Introducción al ROM Hacking[IEEEsbUGR] Introducción al ROM Hacking
[IEEEsbUGR] Introducción al ROM Hacking
 
Introducción al ROM Hacking - Parte 2
 Introducción al ROM Hacking - Parte 2 Introducción al ROM Hacking - Parte 2
Introducción al ROM Hacking - Parte 2
 
Introducción al ROM Hacking - Parte 1
Introducción al ROM Hacking - Parte 1Introducción al ROM Hacking - Parte 1
Introducción al ROM Hacking - Parte 1
 
Ready for IEEEXtreme 9.0?
Ready for IEEEXtreme 9.0?Ready for IEEEXtreme 9.0?
Ready for IEEEXtreme 9.0?
 
Mecanismos de protección de datos en videojuegos
Mecanismos de protección de datos en videojuegosMecanismos de protección de datos en videojuegos
Mecanismos de protección de datos en videojuegos
 
Seguridad en juegos de la Nintendo DS
Seguridad en juegos de la Nintendo DSSeguridad en juegos de la Nintendo DS
Seguridad en juegos de la Nintendo DS
 

JASYP2018 - Destripando juegos: protecciones anti ROM Hacking

  • 1. Destripando juegos Protecciones anti ROM Hacking @pleonex benito356@gmail.com JASyP ‘18
  • 3. ¿Ni no kuni para Nintendo DS?
  • 5. @pleonex en el “mundo real” ○ Benito Palacios ○ Graduado en teleco en la UGR ○ Software Engineer
  • 6. @pleonex en el “mundillo”
  • 7. @pleonex en el “mundillo” ○ @GradienWords ■ Ni no kuni: El mago de las tinieblas (Nintendo DS)
  • 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
  • 10. ROM Hacking: Ingeniería inversa en videojuegos
  • 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
  • 15. Marvel: Infinity War is the most ambitious crossover event in history. Me:
  • 17. Game Resources ● Extraer backgrounds, sprites, música, tipografías ● Reutilización en proyectos personales, y comics ● https://www.spriters-resource.com/
  • 18. Hobby
  • 19. Hobby
  • 20. Hobby
  • 21. Hobby
  • 22. Hobby
  • 23. Hobby
  • 24. Hobby
  • 25. Mods
  • 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. 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 %)
  • 29. Mods
  • 30. Un gran poder... … conlleva una gran responsabilidad
  • 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. ¿Cómo se protege un videojuego?
  • 33. Cifrado en textos: Pokémon Perla/Diamante
  • 34. Cifrado en textos: Pokémon Perla/Diamante
  • 35. Cifrado en textos: Pokémon Perla/Diamante
  • 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. 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. 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. Cifrado en textos: Ni no kuni NOT
  • 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. 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. Ofuscación de archivos: Pokémon Pokémon Perla Pokémon HeartGold
  • 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. 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. Comunicaciones inalámbricas: Nintendo DS ¡El servidor de DLC acepta conexiones HTTP! Podemos reemplazar las URLs del juego de HTTPS a HTTP
  • 46. DLC: Ni no kuni ● Comunicación HTTPS ○ Cifrado RC4 (TLS) ○ TCP: checksum ● DLC ○ Cifrado RC4 (contraseña en juego) ○ Integridad de archivo CRC32
  • 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