Detectabilidad de bots

Libertarian

Recientemente, por mi trabajo, he estado programando con la clase Robot de Java. Esta clase permite ejectuar acciones de teclado/ratón y realizar lecturas de píxeles en pantalla. A raíz de esto, me ha venido la duda de cómo suelen gestionar los MMOs la detección de bots caseros.

Por ejemplo, con esta clase de Java que os comento, sería bastante fácil hacer un bot de pesca del wow. Realizando lecturas de píxeles hasta encontrar el anzuelo, y luego apretando el click oportuno. Incluso se pueden ajustar los tiempos para que todas las acciones no sean instantaneas, simulando una respuesta humana. También podría desarrollarse un auto kick. Realizando de nuevo lecturas de píxeles en el frame de arenas hasta detectar que hay casteo. ¿Cómo gestionan los MMOs este tipo de bots caseros? A fin de cuentas solo habría un programa Java ejecutándose en el background. El bot de pesca no tiene mucho impacto en la jugabilidad pero un autokick o un autoaim, sí. ¿Es una utopía que los desarrolladores de MMOs sean capaces de detectar bots caseros simples como los que os comento? ¿O tienen métodos que desconozco para descubrir estas trampas? Entiendo que un bot comercial, aunque sea simple como estos, sí puede ser detectado por los IDs o trazas que deje en su ejecución. ¿Pero cómo podrían saber si cualquier mierda que se esté ejecutando en el background es un bot casero que se ha hecho un random?

Syki

En MMOs que han tenido problemas con ese tipo de cosas, se ha probado a hacer de todo, desde captchas automáticos al hacer una actividad compatible con un bot hasta 2FA automático.

Una cosa esta clara, siempre que se encuentre un escudo efectivo, la persona que hace los bots encontrará otra manera de crear uno indetectable, es una persecución constante

Kike_Knoxvil

Siendo interno entiendo que hay bastantes mecanismos, e incluso programas de terceros que analizan que estas corriendo y si es para macros. Ahora bien, los bots externos no se como harán para detectarlos

kidandcat

La detección básica es comprobando el comportamiento, por ejemplo, si el jugador siempre hace click exactamente en el centro de los botones, o si mueve el ratón siempre a la misma velocidad.

Luego hay algunos que lo han hecho muy bien, por ejemplo, en Wakfu te salta un "captcha" integrado en el juego, te aparecía un enemigo y tenías que elegir los mismos números que él, si lo matabas te llevabas una pequeña recompensa:

Otra solución parcial es limitar las acciones automáticas. Por ejemplo, en el black desert para recolectar (típica accion facil de automatizar) necesitas energía, y cuando se acaba tienes que esperar. Esto no impide que haya bots, pero sí que no puedan sacar ventaja a un jugador (no pueden estar 24 horas recolectando y que sea virtualmente imposible por parte de un jugador alcanzar al bot).

De todas formas hay una gran diferencia entre los bots que solo leen información de la pantalla, como haría un usuario (que no deja de ser una máquina jugando al mismo juego que las personas) y los bots de autoaim y similares, esos si que literalmente hacen trampa, porque no usan la misma información que el resto de jugadores (es muy complicado que pudiesen procesar la información en pantalla tan rápido como un jugador) sino que leen la memoria RAM del juego e incluso la sobreescriben (por ejemplo todos los chetos del Counter y similares)

1 respuesta
Agradecido
#4kidandcat:

incluso la sobreescriben (por ejemplo todos los chetos del Counter y similares)

¿Los chetos de los FPS sobreescriben la memoria del juego? :O ¿Con qué propósito?

2 respuestas
squ4r3

El wow por ejemplo registra los procesos que hay en ejecución en tu máquina. Si hay ciertos ejecutables que ellos tengan marcados como bots, te cae ban. Por eso la mayoría de la escena de boteo de wow ahora trabaja con OS X, no Windows. Es más difícil de detectar.

Si te limitas a hacer bots que lean información de la pantalla como píxeles, no te van a banear. Yo he hecho bots de pesca, bots anti-afk y bots de autologeo de wow y nunca he tenido ningún problema

#5 en el wow con CheatEngine se podía modificar tu velocidad editando la memoria, si sabes el valor que guarda tu velocidad actual, lo editas y te mueves a toda pastilla por el mapa. Eso sí, hablo de hace más de 10 años, intentar algo así hoy en día es instaban.

1 2 respuestas
kidandcat

#5 Por ejemplo hacer las paredes transparentes

#6 Claro, el tema de bots va asi: las empresas tienen X recursos, y tienen que emplearlos lo más eficientemente posible. Entonces, una de las formas más fáciles y efectivas de proceder es detectar un bot muy usado, y ir a detectar exactamente ese código, asi banean a un montón de gente y la relación recursos/impacto del banwave es alta, es decir, han sido efectivos. Pero esto es fácil cuando mucha gente usa un bot, entonces normalmente se va reportando por los jugadores, se analizan programas corriendo junto al juego, y se hace una correlación, por lo tanto casi todo el proceso es automático.

Normalmente ninguna empresa gasta recursos para impedir el uso de un bot por un solo jugador. Lo que viene siendo que si te programas tu propio bot, (siempre que no sea demasiado obvio, como el tema de que el cursor vaya siempre a la misma velocidad, los tiempos, etc) no te van a banear.

1 1 respuesta
C

Ni idea, pero en Lineage 2 era tan bestia que acabaron añadiendo un bot en el propio juego por que no pudieron pararlos xD

Libertarian

#7 #6 Qué interesante. Entonces en Wow puedes hacerte un auto kick leyendo píxeles en la barra de casteo y no te van a pillar. Y eso sí genera ventaja significativa.

Soltrac

Si ponen un anticheat en modo kernel, todo esto que comentáis es muy sencillo de detectar.

Desde user mode, es fácil de detectar pero tb es fácil de esconder. Desde user mode, es tan fácil como conectarte al proceso y hacer hook de las funciones de Windows de leer píxeles. Si ves q lo hace, subes el exe al servidor para posterior análisis. Con otro cheat en modo kernel que esconda el proceso, esto ya no se podría lograr.

Un pixel bot es el bot más seguro como bot porque no lees la memoria del proceso.

1 respuesta
kidandcat

#10 Yo he hecho un bot para el new world via arduino. Si, leía la pantalla, pero no puedes banear a alguien porque tenga un proceso que lea la pantalla, luego hay mil herramientas que lo hacen, el antivirus, los overlays, etc.

Y luego mi programa le iba diciendo al Arduino el input, y el arduino estaba conectado como teclado + ratón.

Por ahí vi un video también de un bot que hicieron con inteligencia artificial que jugaba al Valorant, y tenian dos portátiles, uno para el juego y el otro para el bot, y lo mismo, el bot solo recibia el output de la pantalla y enviaba input de raton+teclado.

Al final bots va a haber y es imposible evitarlo, la cuestión es más cómo influyen en el juego, cuanto afectan la experiencia de otros jugadores, y cuantos recursos quieren dedicar a eliminarlos.

1 respuesta
Soltrac

#11 no puedo banear tu bot pero si puedo detectar que tienes Arduino y puedo detectar que lees la pantalla.

Con eso, subo tu proceso a mis servidores y lo analizo y veo claramente que es un bot.

No lo hacen por falta de recursos, no porque no puedan.

1 respuesta
kidandcat

#12 Emm no, no puedes detectar que tengo arduino, porque lo único que puedes sacar es que hay un dispositivo conectado y le estoy enviando datos via serial. Y la pantalla claro que la leo, yo, y otros 25 procesos del PC, así que eso no es nada relevante.

Y por último, yo no me he comido el tarro porque no hace falta, pero mi "proceso" usa CV, asi que podría ejecutarlo tranquilamente en otro PC y enchufarle la pantalla del new world via webcam

Pero me repito, te renta gastar los recursos que vas a tener que gastar, que son muchos, para poder intentar detectar si estoy usando un bot así de complejo, solo para impedirme que automatice una tarea repetitiva del juego? no te renta en absoluto. Otro caso muy diferente es que fuese un shooter, y gracias a esto tuviese una ventaja imposible de igualar por un jugador (ver a traves de paredes, o siempre acertar el disparo, etc)

1 respuesta
Soltrac

#13 si que puedo detectarlo.....

Sabes cómo lo hace faceit? Ve que envías input desde dos ratones diferentes y te mete un red flag que te cagas.

Pero no sólo eso, new world no tiene anticheat en modo kernel por lo que con un driver es bastante simple esconder tu proceso e incluso enviar comandos de input a través de tu ratón, por lo que en el fondo tu proceso se puede hacer totalmente invisible.

La realidad es que si un juego no se preocupa de poner un buen anticheat, al final no le va a dedicar recursos a buscar un bot casero de un user.

G4tts

Y ya nos reiremos cuando los bots por bigdata entren en escena de manera común... Ahí si va a ser un chiste el tener que hacer anticheats que analicen un bot que simule ser humano... Acabaremos como en Terminator... Skynet, un bot creado para destruir a sus oponentes imitando a los humanos en el counter strike solo vio 1 salida para evitar que los anticheats lo eliminarán.

Usuarios habituales