06 agosto 2010

Ejemplo sencillo de Hacking de Videojuegos


Hace unos días estuvimos en Campus Party Valencia, donde un integrante del grupo Nogg-Aholic nos mostró en su taller de Hacking Ético de Videojuegos algunas de las herramientas y metodologías que usaban, además de sus propios Hacks (siempre usados con ética).

Lo primero que hice al llegar a casa, fué instalar Steam y bajar algunos juegos para probar. Vamos a ver un ejemplo muy sencillo en Counter Strike Source, una de las estrellas de juegos de acción online.

Nos creamos una partida a solas, y abrimos Cheat Engine. Con este programa buscaremos los datos guardados en memoria del juego, y una vez encontrados los cambiaremos a nuestro gusto. Por ejemplo, vamos a cambiar los cartuchos de nuestra escopeta, ya que sólo con siete se nos queda un poco pequeña. Una vez abierto el proceso del CS:S, buscamos qué direcciones tienen valor 7 (valores de 4 bytes):




Demasiadas direcciones, vamos a gastar un par de cartuchos y hacemos una búsqueda sobre la anterior:



Genial, hacemos un par de búsquedas más para verificar, y ya tenemos los valores que indican el número de cartuchos. Ahora los vamos a "pasar" al área de trabajo de Cheat Engine, y vamos a modificar todos, por ejemplo, a 250:



Como podemos ver, hemos modificado los valores en memoria, y en el juego tenemos ahora ese número de cartuchos. Podemos descargar 250 cartuchos seguidos sin despeinarnos.

Esto mismo lo he probado en un servidor dedicado externo, y sólo funciona visualmente para nosotros, pero el número de cartuchos es el real. Probablemente se deba a la protección VAC que permite Valve en los servidores dedicados, o a que estos datos se procesan en la parte del servidor.

Esto es sólo un pequeño aperitivo de lo que se nos mostró en el taller, si os interesa el tema podeis pasaros por su página web (dónde encontrareis un montón de material), o ver el vídeo del taller. Teneis los enlaces al principio de la entrada.

Artículo por Alberto Ortega Llamas.

11 comments :

World Of BugCraft dijo...

Woha! :D

Me alegra mucho que os gustara el taller, los que no pudisteis verlo en ese momento os recomiendo que os paseis por el enlace de youtube ya que es muy interesante.

Por mi parte decir que respecto a este tutorial, os recomiendo que, en el valor que se cambia la municion del personaje, hagais click boton derecho y MemoryView, después aparecerá una vista hexadecimal y desde ahi podréis observar otros cambios que se producen en la memoria, yo no he hecho la prueba sobre Counter Strike pero a lo mejor encontráis la velocidad de disparo o la vida del jugador o cosas asi.

Si seleccionais un valor del listado y pulsais boton derecho > Freeze this value conseguireis "congelar" ese valor y asi la municion siempre será infinita.

Tengo algun videotutorial en Youtube
http://www.youtube.com/watch?v=G0JETkxAXhc
A lo mejor os sirve de ayuda.

Muchas gracias por estar alli ese dia al Team aw3a que sois una inspiracion para mi, y gracias a la organizacion y todos los asistentes, un saludo a todos! nos vemos en CP2011!

Que rollero que soy me cago en la mar :D

GusX dijo...

De hecho en los juegos de Valve la mayoría de los "chetos" usan programas que alteran la configuración de manera interna y que sí afecta al servidor de juegos.
Programas como el conocido Aimbot hacen que toda la puntería que no tienes parezcas Rambo y Terminator juntos xD.
Evidentemente si Valve te pilla adiós juego, sólo se podría jugar en servidores no VAC.

En realidad el mero hecho de poner un cheat es ya propiamente hacking

a0rtega dijo...

@World Of BugCraft
Genial, más cosas para probar!

Un saludo, espero que haya gustado ;)

Alberto dijo...

Hace unos años los juegos estaban prácticamente desprotegidos, sobre todo a nivel de packets, y con programas como WPE o similares se podía hacer de todo. Habría que diferenciar entre "cheats" o acciones a nivel del cliente y del servidor de todos modos.

Hoy en día con encriptaciones, metodos activos de detección etc. es más complicado y muchas veces implica tener conocimientos de ingeniería inversa.

He de decir por cierto que hay muy poco material e interés en general por el hacking de videojuegos o juegos online en español (a un nivel digamos medio-avanzado) y lo poco que hay se limita a los juegos más populares WoW, CS etc. aunque los procedimientos suelen ser similares. Por eso me parece interesante esta entrada y el grupo que no lo conocía la verdad, así como el vídeo de WoBugCraft (xD) muy bien explicado y detallado.

World Of BugCraft dijo...

GusX Sobre la implementacion anti-cheat que realiza Valve, es una implementacion sencilla, que solo comprueba cambios de posicion del jugador (Para evitar teletransportarte) la municion y diferentes parametros del jugador.

Cuando hablamos de datos del lado del cliente y no del servidor (Por ejemplo cualquiero dato visual o de renderizado) podemos pensar en hacer, por ejemplo, un Hook sobre una funcion de renderizado, esto sería, capturar una funcion del proceso del juego (OpenGl o lo que sea) y a traves de esta realizar cambios, aplicar opacidad sobre las paredes para que sea transparente o hacer que los nombres de los jugadores se rendericen en la pantalla (pasando de 3D a 2D) y con esto saber en que posicion se encuentran los enemigos.


Con esto quiero decir que, aun que implementen una seguridad sobre el mismo juego es posible modificar cosas que nos permitan obtener ventaja sobre el enemigo, aun que esto no sería hacking ético que es lo que a mi me gusta :)

Coleguita dijo...

En el vídeo se oyen a muchos dando voces durante la conferencia. Espero que fuese porque había otra charla al lado y no por mala educación.
Muy interesante el taller, buenas explicaciones y ameno. Mi enhorabuena!

r0s dijo...

Que interesante! Ahora mismo me pongo a trastear con ello :) que siempre se aprende algo!

svoboda dijo...

La charla estuvo muy interesante, y todas las cosas allí explicadas muy interesantes. Además, de abrir una puerta para jugar un poco más con nuestros juegos. Esto habré puertas a cambiar un poco las partidas en red :p
@Coleguita Respecto a las voces del video y el follón, si que había otra charla cerca, pero además, se estuvo rodando el video final de la campus, con lo que hicimos varias interrupciones para saltar y, encima, se fue la luz del proyecto y micrófono un segundillo. A pesar de todo, repito, estuvo muy interesante

Anónimo dijo...

Grats a karliky la charla molo mucho ;).

Por cierto en dragonjar hay otro articulo ^^

??? dijo...

Es muy enviciante. Yo lo conocí hace mucho tiempo en el GunZ (un juego gratuito algo antiguo) cuando se pusieron de moda los chetos.

También lo he utilizado con juegos en flash (los típicos que subes la puntuación a un servidor) y funciona perfectamente. Aunque claro está, beneficio cero ;)

Anónimo dijo...

La cosa no es tan fácil como alterar un par de direcciones de memoria o bloquearlas, prueba a cambiar de arma... las direcciones de memoria se alteran incluso si cambias de armas con el mismo tipo de municion. Otra cosa que observé es que una de las direcciones de memoria es la munición "que sale en la pantalla" la cual puedes alterar sin problemas para que muestre que tienes, por poner un ejemplo 30 balas cuando en realidad tienes 250 :D.
En cuanto a bloquear el valor de las direcciones hay que tener cuidado, si el arma tiene poca munición como la escopeta automática y ésta llega a cero puede buguearse (ya que los valores aunque parezca que no tardan en actualizarse) y quedarte "en bolas" al ver que tu escopeta no dispara o se vuelve loca y empieza a abrir fuego a lo Rambo.
Si puedes trata de echarle un vistazo al modo dios que aun no he descubierto como es XD.