Título: Modificar exe mediante trainer Publicado por: msrone en 23 Octubre 2007, 10:06 am Wenas, soy demasiado novato para expresarm correctamente pero voy a intentar explicar mi problema:
La cuestion es que quiero crear un trainer, es decir, quiero crear un programa para que cambie en un determinado momento la memoria del exe del juego y se puedan añadir mas recursos, vidas y tal. He estado leyendo, y utilizo el tsearch para ver la direccion que me interesa, y ahora no se como puedo escribir el codigo para poder modificar el value de esa direccion cuando a mi me de la gana. He probado a utilizar el trainer maker kit, xro al no tener suficientes conocimientos me kedo blokeado. Muchas gracias por la ayuda ;) Título: Re: Modificar exe mediante trainer Publicado por: x4uth en 23 Octubre 2007, 11:36 am Lo tipico es hacer el trainer el C++ usando las apis WriteProcessMemory y ReadProcessMemory para leer y escribir, para esto debes tener un handle del proceso que se optiene con OpenProcess para OpenProcess necesita la pid (id del proceso q se puede optener con GetWindowThreadProcessId si tenemos el handle de la ventana
ahi te pongo un ejemplo por si no entendiste bien :/ Código: /* Esto es un trainer sencillo que congela el tiempo del buscaminas (by x4uth) */ Título: Re: Modificar exe mediante trainer Publicado por: msrone en 23 Octubre 2007, 13:34 pm Muchisimas gracias por contestar, me resulta un poco dificil todo esto, ya que de C++ no se aun casi nada.
Y si quiero coger un tipo de recurso del juego y subirlo al numero que yo desee como se podria poner? p.D... si me puedes recomendar algun sitio para ir aprendiendo C++ te estare muy agradecido ;). Muchas gracias Título: Re: Modificar exe mediante trainer Publicado por: x4uth en 23 Octubre 2007, 13:54 pm no entiendo a que te refieres con recurso, ese ejemplo que te puse modifica la memoria de otro programa (q en este caso es el tiempo q es de 4 bytes), pero siguiendo ese esquema puedes modicar todo lo que este en la memoria del programa ya sea codigo del programa o variables.
para aprender c++ pos no se :/ en esta misma web hay una subforo de c++ , pasate por ahi y pregunta Título: Re: Modificar exe mediante trainer Publicado por: msrone en 23 Octubre 2007, 14:07 pm Vale perfecto, pues lo unico que tendria que tener en cuenta seria el offset de lo q quiero cambiar del programa. Entonces, si yo quisiera agregar una cantidad sobre alguna otra que este ya en el programa, como por ejemplo añadir 1000 de oro, comida, etc... esto se podria hacer siguiendo tu eskema?
P.D... me puedes decir que programa usas para C++... Disculpa por tanta pregunta, si te parecen ridiculas, pero siempre e kerido aprender esto y nunca e podido.gracias. Título: Re: Modificar exe mediante trainer Publicado por: x4uth en 23 Octubre 2007, 14:17 pm claro es lo mismo, para el oro por ejemplo, lo primero es poner el offset correcto
Código: #define OFFSET_TIEMPO 0x100579C <--- ahi pones el del oro luego todo igual hasta que lees el oro con Citar ReadProcessMemory(hProcess,(LPVOID)OFFSET_TIEMPO, &tiempo, 4, NULL); ahi tenemos el oro actual en "tiempo" asi que le sumamos la cantidad que quieres Código: tiempo+=10000; Código: WriteProcessMemory(hProcess,(LPVOID)OFFSET_TIEMPO, &tiempo, 4, NULL); y el bucle for no haria falta pues en este caso queremos aumentar el oro en una cantidad no dejarlo fijo... pd. si te fijas ni cambie el nombre de tiempo por oro, pues da lo mismo lo q sea, el nombre de la variable es solo el nombre... Título: Re: Modificar exe mediante trainer Publicado por: msrone en 23 Octubre 2007, 14:26 pm Vale perfecto, te e entendido bastante bien.
Mis dudas ahroa es si para determinar un offset por ejemplo del oro, debo de realizar una buskeda en la memoria, con el tsearch por ejemplo viendo donde esta la direccion del oro, y despues como lo paso al offset? Y la segunda, todo esto puede ponerse dentro de un boton que al pulsar de el resultado de añadir esos 10000 de oro? estoy utilizando el wxdev-C++ pero no puedo compilar tu codigo xq me da error en el NULL... gracias Título: Re: Modificar exe mediante trainer Publicado por: x4uth en 23 Octubre 2007, 14:32 pm Vale perfecto, te e entendido bastante bien. Mis dudas ahroa es si para determinar un offset por ejemplo del oro, debo de realizar una buskeda en la memoria, con el tsearch por ejemplo viendo donde esta la direccion del oro, y despues como lo paso al offset? la direccion q te da el tsearch es el offset Y la segunda, todo esto puede ponerse dentro de un boton que al pulsar de el resultado de añadir esos 10000 de oro? claro...estoy utilizando el wxdev-C++ pero no puedo compilar tu codigo xq me da error en el NULL... no deberia pues el NULL es una constante basica pero bueno pon esto al principio del todo (despues de los includes)gracias Código: #define NULL 0 Título: Re: Modificar exe mediante trainer Publicado por: msrone en 23 Octubre 2007, 14:48 pm El problema es que el tsearch me da una direccion, pero esta varia. Como se podria arreglar esto?
No e podido compilar tu codigo me da error, explicame por favor como puedo compilarlo. gracias Título: Re: Modificar exe mediante trainer Publicado por: x4uth en 23 Octubre 2007, 19:42 pm El problema es que el tsearch me da una direccion, pero esta varia. Como se podria arreglar esto? eso tiene un cierto nivel de complejidad arreglarlo, el tema es que el programa tenga controlada una variable dinamica tiene q tenerla referenciada por un puntero obligatoriamente, este puntero puedes encontrarlo debugando el codigo que modifica dicha direccion y con un poco de suerte ese puntero tendra una direccion fija, la otra opcion es modificar el codigo del programa , por ejemplo el caso del tiempo del buscaminas q se va incrementando cada segundo, para evitar q se incremente bastaria buscar el lugar donde se incrementa , suponiendo que llegue a esta linea INC EAX , tenemos en la direccion de memoria un 0x40 q corresponde a esa operacion, si la cambias por un 0x90 tienes un NOP con lo cual no se incrementaria el tiempo. una tercera forma seria buscar una referencia constante en el bloque de memoria pues muchas veces nuestra variable pertence a una clase o otro tipo de estructura que pueden tener partes constantes, en este caso tendrias q contar los bytes de diferencia, y bastaria con buscar la constante y sumar o restar los bytes de diferencias a la direccion obtenida para obtener la direccion q queremos No e podido compilar tu codigo me da error, explicame por favor como puedo compilarlo. con Visual C++ 2005 compila perfectament, = si me dices el error te puedo ayudarTítulo: Re: Modificar exe mediante trainer Publicado por: msrone en 23 Octubre 2007, 21:01 pm Bien amigo, gracias por contestar primeramente. Segundo, e podido llegar al offset en el cual puedo blokear tanto la subida como la bajada de oro.
549539 mov [edi+eax+0x4],edx entonces al crear el trainer pongo en los respectivos botones: Patched script: Poke 549539 90 90 90 90 UnPatched script: Poke 549539 89 54 07 04 Y consigo el bloquear tanto la subida como la bajada del recurso (oro). Mi pregunta sigue en: Teniendo ya este offset, como podria dar a un boton la funcion de subir la cantidad que kiera del oro? con el codigo q me has puesto antes, modificandolo? Que codigo pondrias tu en kada boton, para q al accionarlo subiera dicha cantidad. Muchas gracias crack. Título: Re: Modificar exe mediante trainer Publicado por: msrone en 23 Octubre 2007, 21:38 pm Rectifico, este offset, sera alguno q hará alguna funcion la cual si la blokeas impides que suba o baje la cantidad de oro que posees. Se podria saber el offset en el cual hace el recuento del oro total q keda a partir del mov [edi+eax+0x4],edx ?
:-\ Título: Re: Modificar exe mediante trainer Publicado por: x4uth en 23 Octubre 2007, 22:20 pm pues no se me ocurre ninguna manera sencilla de hacerlo :/ pero si lo que quieres es que vaya aumentando y
en [edi+eax+0x4] esta el dinero puedes cambiar el 89 por 01 que seria esto Código: WriteProcessMemory(hProcess,(LPVOID)0x549539, 1, 1, NULL); add [edi+eax+0x4],edx asi aumenta el dinero cada ves que se llame a la funcion (se podria decir q se duplica) Título: Re: Modificar exe mediante trainer Publicado por: msrone en 24 Octubre 2007, 19:42 pm Al cambiar el 89 por el 01 me da error, y me saka del juego. Me dice que no se puede "written", aqui tengo el trainer maker kit, en el cual puedo darle la opcion de poner un script. Si pusiera add dword o add byte ?... O cambiar el 89 por algun otro numero para que haga la funcion deseada??
Gracias Título: Re: Modificar exe mediante trainer Publicado por: x4uth en 24 Octubre 2007, 21:24 pm pues no se xk te da ese fallo quiza de tanto duplicarse llegue a un numero imposible
lo otro q puedes hacer es cambiar 895438 04 MOV DWORD PTR DS:[EAX+EDI+4],EDX por 896438 04 MOV DWORD PTR DS:[EAX+EDI+4],ESP o sea el 54 por 64, ESP es el puntero al stack que normalmente es 0012XXXX con lo cual estas poniendo un numero 1179668++ Título: Re: Modificar exe mediante trainer Publicado por: byebye en 24 Octubre 2007, 21:37 pm mira a ver si con tsearch te deja ver el valor de los registros, con cheat engine se puede y personalmente me gusta mas. entonces reg+reg+n = direccion donde estan los datos, escribe ahi directamente. aunque lo suyo es que anotes esa direccion pilles el depurador yverifiques ue esta pasando en esa direccion. volviendo al tema del cheat engine te viene con un programa tutorial donde te enseña lo mas basico hasta el problema de la DMA y como solucionarlo.
saludos. Título: Re: Modificar exe mediante trainer Publicado por: msrone en 25 Octubre 2007, 02:22 am Gracias por contestarme crack; haber tengo esto exactamente:
549535 - push edi 549536 - mov edi, [esi + 18] -- 549539 - mov [ edi + eax + 04] edx 54953d - mov edx. [esi+18] 549540 - add eax,edx me dice: the value of the pointer needed to find this addres is probably 092F2EF0 Eax 00000030 Ebx 00000030 Ecx 00000003 Edx 00000000 Esi 05087C80 Edi 092F2EF0 Esp 0012Fbcc Ebp 0012FbF4 Eip 0054953d Hago la buskeda con el 092F2EF0 y no logro encontrar el punto en el q se guarda la cantidad de oro/piedras/Madera del p*to juego (settlers6). Alguna idea? Gracias ;) Título: Re: Modificar exe mediante trainer Publicado por: x4uth en 25 Octubre 2007, 11:06 am segun eso q pusiste ahi el puntero a 092F2EF0 lo tienes en ESI+18
si ESI es constante entonces ya lo tienes resuelto [0x5087C80+0x18] +0x00000030 +0x4 = direccion del oro Título: Re: Modificar exe mediante trainer Publicado por: msrone en 26 Octubre 2007, 15:35 pm Nuevos avances en el tema:
He descubierto que en la funcion: -- 549539 - mov [ edi + eax + 04] edx El edx es la cantidad de oro que queda. Entonces, la pregunta es: ¿Bastaria con modificar ese edx para que se pudiera ver el incremento del oro en el juego? ¿como se podria hacer?? add?¿... Espero respuestas, gracias ;) Título: Re: Modificar exe mediante trainer Publicado por: byebye en 27 Octubre 2007, 20:35 pm si edx es el valor del oro ya aumentado o restado yo iria mas atras hasta encontrar donde se pone el valor a edx y ahi modificar la funcion que lo resta yue esta incremente, asi veras aumentar el oro.
Título: Modificar exe mediante trainer Publicado por: sigfrick en 8 Enero 2014, 04:44 am Se puede hacer para el Grand Chase Latino y como seria si es mucho pedir?
Gracias Pd: Perdon por revivir un tema del 2007 Título: Re: Modificar exe mediante trainer Publicado por: .:UND3R:. en 8 Enero 2014, 07:37 am Actualmente existen nuevos thread en donde se explica todo esto:
http://foro.elhacker.net/ingenieria_inversa/tutorial_usar_cheat_engine_para_modificar_juegos_inyeccion_de_codigo-t382181.0.html (http://foro.elhacker.net/ingenieria_inversa/tutorial_usar_cheat_engine_para_modificar_juegos_inyeccion_de_codigo-t382181.0.html) http://foro.elhacker.net/ingenieria_inversa/tutorial_wpe_pro_captura_modifica_y_envia_paquetes_tcp_cheats_juegos-t405121.0.html (http://foro.elhacker.net/ingenieria_inversa/tutorial_wpe_pro_captura_modifica_y_envia_paquetes_tcp_cheats_juegos-t405121.0.html) http://foro.elhacker.net/ingenieria_inversa/videotutoriales_hacking_de_juegos_onlinelocal_cheat_engine_ollydbg-t406249.0.html (http://foro.elhacker.net/ingenieria_inversa/videotutoriales_hacking_de_juegos_onlinelocal_cheat_engine_ollydbg-t406249.0.html) En ellos podrás preguntar libremente sin ser sancionado, cierro el post, saludos |