Videotutoriales de Hacking*
Buenas a todos y ante todo gracias por pasar por este post. Encontraréis links a mis videotutoriales de hacking de juegos (aunque en el canal, hay otras cosas, como programación en general).
Para aquellos impacientes que no desean leer o ir buscando uno a uno, os dejo una lista de reproducción donde añado los capítulos según los voy grabando:
Lista de reproducción: https://www.youtube.com/playlist?list=PL6RJR1V-uAbyRMzbOYFcTRTVZM4C1pOj0
Y mi canal, donde también veréis las novedades:
Canal: http://youtube.es/user/bl1pi
Para los demás, os dejo a continuación una lista de los capítulos con una debida explicación/resumen.
Los links se encuentran debajo de la descripción de cada vídeo.
Si habéis leído hasta aquí, me gustaría puntualizar el término hacking. Aunque voy a nombrarlo así porque es "como se conoce", lo que realmente estamos haciendo es cracking, o, como en la sección que estamos, ingeniería inversa.
Capítulos:
- 1. Introducción y Cheat Engine | Hacking de juegos
- En este primer vídeo aprenderemos a usar y a entender como funciona Cheat Engine. Es un programa que nos permite escanear la memoria de otros programas. Dicho de otra forma, Cheat Engine es un programa que dado unos valores (por ejemplo, 100 de vida) que cambian en el tiempo (nos disparan, ahora tenemos 90), nos permite encontrar en que punto (address, dirección de memoria en castellano) se encuentra este valor en el programa/juego.
Dada la address (a partir de ahora diré address, no dirección) podemos leer el valor actual o bien cambiarlo para nuestra conveniencia (nuestro real objetivo).
Todo sea dicho, hay ciertas limitaciones, pues "no todas las cosas son hackeables". Para que se entienda, tu puedes hackear/cambiar todo aquello que se encuentra en tu ordenador. Si por ejemplo en el juego que quieres hackear la vida la gestiona el servidor, y no se encuentra en tu juego (cliente), eso no podremos modificarlo. De hacerlo, lo único que cambiariamos sería lo que nosotros vemos, pero en ningún caso el valor real, puesto que no está en tu PC (piensa que es como si tu PC fuera solo una pantalla que muestra valores). En tal caso, hablaremos de "variables" serversided (es decir, en el lado del servidor).
Veremos más adelante que estrategias podemos tomar para solucionar esto (solucionar no implica "poderlo hackear", pues, de ninguna forma podremos). - https://www.youtube.com/watch?v=VJx7MzlTr28&index=1&list=PL6RJR1V-uAbyRMzbOYFcTRTVZM4C1pOj0
- En este primer vídeo aprenderemos a usar y a entender como funciona Cheat Engine. Es un programa que nos permite escanear la memoria de otros programas. Dicho de otra forma, Cheat Engine es un programa que dado unos valores (por ejemplo, 100 de vida) que cambian en el tiempo (nos disparan, ahora tenemos 90), nos permite encontrar en que punto (address, dirección de memoria en castellano) se encuentra este valor en el programa/juego.
- 2. Punteros en CE | Hacking de juegos
- En el capítulo anterior trabajamos con variables que, aunque cerremos el juego, al abrirlo de nuevo seguirán en el mismo sitio (address). En este vídeo veremos que no siempre es así, y que hay veces (prácticamente siempre en juegos reales) en que tendremos que trabajar con los llamados "punteros".
Que es un puntero? Si bien decimos que una variable es algo que contiene un valor (por ejemplo, la "vida" es una variable, de 0 a 100), un puntero será un tipo específico de variable cuyo valor nos lleve a la address de otra variable. Por ejemplo, nos podemos encontrar con que "vida" es dinámica (cada vez cambia de sitio). Deberemos encontrar una variable estática (verde, no cambia, de las del primer vídeo) cuyo valor nos lleve a esta variable "vida". Es decir, en realidad lo que hacemos es encontrar un puntero a vida:
[ESTÁTICO]: Vida (estático) -> 100
[DINÁMICO]: Puntero (estático) a vida -> Vida (dinámico) -> 100
Si os parece muy difícil, mirad el vídeo y seguro que lo entendéis. Sino, postead! - https://www.youtube.com/watch?v=nDPxJlOZ-Bc&index=1&list=PL6RJR1V-uAbyRMzbOYFcTRTVZM4C1pOj0
- En el capítulo anterior trabajamos con variables que, aunque cerremos el juego, al abrirlo de nuevo seguirán en el mismo sitio (address). En este vídeo veremos que no siempre es así, y que hay veces (prácticamente siempre en juegos reales) en que tendremos que trabajar con los llamados "punteros".
- 3. Estructuras en CE | Hacking de juegos
- Veremos en este vídeo que son las estructuras y como identificarlas. Es importante que para entender este vídeo hayamos comprendido a la perfección el anterior capítulo, puesto que las estructuras no son más que un caso particular de los punteros!
Lo que distingue a las estructuras es que con un solo puntero tenemos acceso a más de una variable, mediante la modificación del offset. Este vídeo es muy fácil si se entiende bien el anterior, de no ser así, preguntad tanto como queráis, puesto que es obligatorio comprender este tutorial si queréis aplicarlo a juegos reales. La mayoría de programadores utilizan estructuras para organizar las variables en el código, así que con esto podremos identificarlas. - http://youtu.be/XbZRHbd0qEo&index=1&list=PL6RJR1V-uAbyRMzbOYFcTRTVZM4C1pOj0
- Veremos en este vídeo que son las estructuras y como identificarlas. Es importante que para entender este vídeo hayamos comprendido a la perfección el anterior capítulo, puesto que las estructuras no son más que un caso particular de los punteros!
- 4. Creando un Hack DLL en C++ | Hacking de juegos
- Después de aprender a utilizar el Cheat Engine para encontrar las direcciones cuyos valores queremos modificar, en este vídeo aprenderemos a crear una DLL donde poner los hacks.
Programaremos en C++ y aunque está hecho y pensado para gente que nunca ha programado, yo recomiendo tener unas nociones mínimas de C/C++, ya que ayudaran a entender y agilizar mucho más el progreso.
Usaremos el Visual Studio para programar la DLL, pero se puede hacer con cualquier compilador.
Se trata de un vídeo largo (aprox. 40 mínutos), pero esto es debido al enorme grado de explicación y detalle con que se hace. El objetivo que se persigue es aprender a hacer hacks "universales", para cualquier juego, y no a copiar el código como robots sin saber lo que realmente se hace. - https://www.youtube.com/watch?v=Kjw7lHLF8t8&index=1&list=PL6RJR1V-uAbyRMzbOYFcTRTVZM4C1pOj0
- Después de aprender a utilizar el Cheat Engine para encontrar las direcciones cuyos valores queremos modificar, en este vídeo aprenderemos a crear una DLL donde poner los hacks.
- 5. Desactivar AntiHack y OllyDbg | Hacking de juegos
- Ya con la DLL creada y unos conocimientos afianzados de CE, y buena parte de la teoría (addresses y punteros) aprendida, vamos a lanzarnos al mundo de la depuración, de mano de una de los mejores y más útiles programas, OllyDbg 1.10.
De nuevo se trata de un tutorial orientado a gente que no sepa nada de OllyDbg, pero aún así, si se tienen conocimientos de depuración y/o assembler, harán que el vídeo sea mucho más ameno y mucho más fácil.
La depuración exige dedicación, tiempo y ganas de aprender y no rendirse, porque, realmente, es bastante más complicado de lo que parece. Haré algún tutorial más, adentrándonos más en este exigente mundo, junto con CE, para ver hasta donde se puede llegar. - https://www.youtube.com/watch?v=Ro7xhZb6K8I&index=1&list=PL6RJR1V-uAbyRMzbOYFcTRTVZM4C1pOj0
- Ya con la DLL creada y unos conocimientos afianzados de CE, y buena parte de la teoría (addresses y punteros) aprendida, vamos a lanzarnos al mundo de la depuración, de mano de una de los mejores y más útiles programas, OllyDbg 1.10.
- 6. Mejorando el hack DLL | Hacking de juegos
- Una vez ya sabemos hacer un bypass para el antihack mediante OllyDbg, el siguiente paso es distribuirlo junto a nuestros hacks.
Para ello aprenderemos a programarlos en la DLL, veremos como se modifica el código en memoria, pues requiere un poco más de código que la modificación de simples variables/valores.
Partiremos de la DLL que ya desarrollamos en anteriores vídeos, aunque los conceptos son perfectamente aplicables a cualquier código empezado de 0 o de otro proyecto vuestro propio. - https://www.youtube.com/watch?v=YmaPXY-gmOE&index=1&list=PL6RJR1V-uAbyRMzbOYFcTRTVZM4C1pOj0
- Una vez ya sabemos hacer un bypass para el antihack mediante OllyDbg, el siguiente paso es distribuirlo junto a nuestros hacks.
- 7. Punto de entrada dinámico | Hacking de juegos
- En anteriores vídeos se cometieron algunos errores, dado que durante la creación del programa "HackMe" olvidé cambiar una pequeña configuración.
No supone un gran problema ni dificulta en grandes medidas el aprendizaje, e incluso en algunos casos es conveniente para aprender más aún.
El problema está en que el llamado "Entry Point", o punto de entrada del programa, es decir la dirección donde empieza el código, es dinámica. ¿Que implica esto? Implica que cabe la posibilidad de que las direcciones cambien ligeramente cada vez que abras el programa de nuevo, y, sobretodo, si entre medio se cierra el pc.
Veremos como identificar estos Random Entry Points y como solucionarlos fácilmente. - https://www.youtube.com/watch?v=AjEa9Jwd9zc&index=1&list=PL6RJR1V-uAbyRMzbOYFcTRTVZM4C1pOj0
- En anteriores vídeos se cometieron algunos errores, dado que durante la creación del programa "HackMe" olvidé cambiar una pequeña configuración.
Hacking de Juegos Online
- 1. WPE Pro, Paquetes y C-S | Hacking de juegos Online
- Este tutorial da inicio a todo el mundo de los juegos ONLINE. Consideramos los anteriores vídeos como preliminares totalmente necesarios, ya que nos explican unos conceptos y nos aportan una soltura a la hora de programa que no se adquiere de otra forma.
Es gracias a ellos que ahora podemos coger un juego online y realizar hacks para este.
¿Que haremos en concreto? En este primer vídeo aprenderemos conceptos como Cliente, Servidor y Paquete. A partir de ellos veremos como funciona la transmisión de información entre nuestro juego (cliente) y el servidor, y la interceptaremos con un programa llamado "WPE Pro".
Más adelante aprenderemos a entender estos paquetes y a crear a partir de ellos un programa (bot) que nos cure automáticamente si nuestra vida baja del 50%. - https://www.youtube.com/watch?v=qqAxLXV-HY4&list=PL6RJR1V-uAby8xdNMKJbBebeJpxdnQy7r
- Este tutorial da inicio a todo el mundo de los juegos ONLINE. Consideramos los anteriores vídeos como preliminares totalmente necesarios, ya que nos explican unos conceptos y nos aportan una soltura a la hora de programa que no se adquiere de otra forma.
- 2. WPE Pro, Interpretando los Paquetes | Hacking de juegos Online
- Ahora que ya hemos visto como obtener los paquetes, el siguiente paso es interpretarlos, es decir, ¿qué hace que?
Intentaremos encontrar la relación entre lo que el servidor nos envía (y lo que nosotros le enviamos) con las acciones que realizamos en el juego.
Por ejemplo, ¿qué ocurre cuando utilizo una poción? O más simple aún, ¿qué recibe el servidor cuando me conecto? Y en respuesta a esto, como me contesta el servidor si es correcto o incorrecto mi login?
Es un sinfín de posibilidades, cualquier acción hecha en el juego tiene un equivalente en paquete, y es nuestro trabajo encontrarlos y entenderlos.
Esto servirá de preparación y de último paso para hacer el autopot. - http://www.youtube.com/watch?v=0VBZ2SX_y4Y&list=PL6RJR1V-uAby8xdNMKJbBebeJpxdnQy7r
- Ahora que ya hemos visto como obtener los paquetes, el siguiente paso es interpretarlos, es decir, ¿qué hace que?
- 3. Creando un AutoPot DLL en C++ | Hacking de juegos Online
- En el vídeo anterior pusimos al descubierto toda la comunicación entre el servidor y nosotros (o al menos la parte que nos interesaba). Es decir, hemos "comprometido" los protocolos entre ambos.
Ahora es simple cuestión de modificar, insertar o eliminar paquetes para conseguir lo que queremos. ¿Y qué queremos? En este vídeo veremos como se hace un AutoPot, es decir, un programa que nos cura solos cuando la vida baja de un % que nosotros marcamos.
¿Qué diferencia un autopot de un programa que pulse automáticamente teclas? El autopot es una DLL que además funciona enviando paquetes e interceptando, es decir, no requiere que tengamos el juego abierto ni en primer plano, mientras que lo otro, sí lo requiere.
Hacer un hack basado en paquetes tiene muchas ventajas respecto a uno basado en, por ejemplo, pulsaciones automáticas de botones. - http://www.youtube.com/watch?v=8BwAOAXYcWw&list=PL6RJR1V-uAby8xdNMKJbBebeJpxdnQy7r
- En el vídeo anterior pusimos al descubierto toda la comunicación entre el servidor y nosotros (o al menos la parte que nos interesaba). Es decir, hemos "comprometido" los protocolos entre ambos.
- 4. OllyDbg, cifrado de paquetes, Nostale | Hacking de juegos Online
- De nuevo a la carga! En este vídeo empezamos con la ingeniería reversa en un nuevo juego online llamado NosTale. ¿Porqué este? Los paquetes son cifrados, sin demasiada dificultad, y a la vez no utiliza un anti-cheat, lo que lo hace perfecto para introducir el parseo de paquetes cifrados.
Para poder ver los paquetes y parsearlos, así como replicarlos, inyectarlos y utilizarlos, usaremos OllyDbg para encontrar la función de cifrado.
En este vídeo de 1 hora llegaremos a entender, a groso modo, como cifra el login, y en los siguientes haremos una implementación general para C++. - https://www.youtube.com/watch?v=BOF_gnfIZbQ&list=PL6RJR1V-uAby8xdNMKJbBebeJpxdnQy7r
- De nuevo a la carga! En este vídeo empezamos con la ingeniería reversa en un nuevo juego online llamado NosTale. ¿Porqué este? Los paquetes son cifrados, sin demasiada dificultad, y a la vez no utiliza un anti-cheat, lo que lo hace perfecto para introducir el parseo de paquetes cifrados.
- 5. Login NosTale al descubierto! 100% descifrado (OllyDbg y C++11) | Hacking de juegos Online
- Y ha caído! El login de NosTale está expuesto al 100%, lo que nos va a permitir crear un bot, un bot sin cliente e incluso un servidor.
En este vídeo veremos un poco de OllyDbg, para acabar de encontrar las partes del paquete de login que nos faltan, y sobretodo C++11, cuando pasemos lo que hemos encontrado en Olly a nuestro bot.
De paso, veremos como descifrar las respuestas al login (recv). - https://www.youtube.com/watch?v=4pvkQ_u7tRc&list=PL6RJR1V-uAby8xdNMKJbBebeJpxdnQy7r
- Y ha caído! El login de NosTale está expuesto al 100%, lo que nos va a permitir crear un bot, un bot sin cliente e incluso un servidor.
- 6. NosTale hackeado - descifrado InGame, OllyDbg, Packets | Hacking de juegos Online
- Ahora que ya tenemos parte de la criptografía del juego desvelada, vamos a ser capaces de cifrar y descrifar cualquier paquete, sea del cliente o del servidor, nos lanzamos a la piscina con el parseo de paquetes.
En este vídeo no dejaremos rincón de NosTale sin descifrar y completaremos nuestro Bot (en cuanto a packet logging se refiere), además de extender la funcionalidad de nuestro bot Headless. - https://www.youtube.com/watch?v=uHu9vXBFJbU&list=PL6RJR1V-uAby8xdNMKJbBebeJpxdnQy7r
- Ahora que ya tenemos parte de la criptografía del juego desvelada, vamos a ser capaces de cifrar y descrifar cualquier paquete, sea del cliente o del servidor, nos lanzamos a la piscina con el parseo de paquetes.
- 7. OllyDbg, teoría de inyección de paquetes | Hacking de juegos Online
- En este vídeo se explica como funciona en detalle el sistema del juego para evitar inyecciones de paquetes. Para ello, usaremos todos los conocimientos adquiridos en los vídeos anteriores.
Nos servirá para sentar las bases para en futuros vídeos poder realizar bots de auto-ataque, auto-curación... - https://www.youtube.com/watch?v=F07GUtjZlnU&index=7&list=PL6RJR1V-uAby8xdNMKJbBebeJpxdnQy7r
- En este vídeo se explica como funciona en detalle el sistema del juego para evitar inyecciones de paquetes. Para ello, usaremos todos los conocimientos adquiridos en los vídeos anteriores.
- 8. Revisión del cifrado/crypting | Hacking de juegos Online
- Durante un rewrite parcial del uso de los strings, donde se cambía de los std::string a fmt::writer, parte del cifrado quedó afectado y no funciona como es debido.
Revisaremos todo el proceso, incluido un repaso con OllyDbg, de como funciona. Luego pasaremos a un repaso de todo el código y arreglaremos varios bugs. - https://www.youtube.com/watch?v=zzkhbwUXVPU&index=8&list=PL6RJR1V-uAby8xdNMKJbBebeJpxdnQy7r
- Durante un rewrite parcial del uso de los strings, donde se cambía de los std::string a fmt::writer, parte del cifrado quedó afectado y no funciona como es debido.
- 9. Bot auto-ataque, inyección de paquetes (I) | Hacking de juegos Online
- Por fin, tras largos días de trabajo sin grandes frutos, en este vídeo conseguiremos hacer funcionar al 100% la inyección de paquetes. Esto nos servirá, por ejemplo, para hacer una primera aproximación al auto-ataque.
Si bien el bot aún no atacará solo, nosotros tenemos que decirle el objetivo, vemos que ya podemos simular el ataque des del bot con simplemente el ID del monstruo al que queremos atacar. Será relativamente fácil, en los siguientes vídeos, hacer que el bot realmente ataque solo! - https://www.youtube.com/watch?v=vVhdDUYKMi0&index=9&list=PL6RJR1V-uAby8xdNMKJbBebeJpxdnQy7r
- Por fin, tras largos días de trabajo sin grandes frutos, en este vídeo conseguiremos hacer funcionar al 100% la inyección de paquetes. Esto nos servirá, por ejemplo, para hacer una primera aproximación al auto-ataque.
Streamings - Hacking de Juegos Online
- NosTale - OllyDbg, Wpe Pro... [ES/ENG]
- Primero de la serie de streamings! Tened en cuenta que es todo en directo, incluido el debugging y la ingeniería inversa, así que a parte de conocimientos están garantizadas las horas de frustación!
Al final por eso, casi tenemos descifrado del todo el paquete de login, y para el siguiente vídeo lo estará al 100%! - https://www.youtube.com/watch?v=z1Ii3C-6pK0
- Primero de la serie de streamings! Tened en cuenta que es todo en directo, incluido el debugging y la ingeniería inversa, así que a parte de conocimientos están garantizadas las horas de frustación!
- NosTale - Des-cifrando y C++11 [ES/ENG]
- Y ya tenemos el login al 100% Tanto para recibir como para enviar!
En este vídeo completaremos la DLL añadiendo el Detour a recv y, además, crearemos un ejecutable de consola capaz de conectarse al servidor de forma completamente externa al cliente! - https://www.youtube.com/watch?v=nK8Vx0ytqUU
- Y ya tenemos el login al 100% Tanto para recibir como para enviar!