elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Creacion de un trainer en c++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Creacion de un trainer en c++  (Leído 5,619 veces)
patilanz


Desconectado Desconectado

Mensajes: 481

555-555-0199@example.com


Ver Perfil WWW
Creacion de un trainer en c++
« en: 1 Octubre 2014, 21:09 pm »

Hola desde hace tiempo tengo muchas de editar la memoria de una aplicación. Quiero hacer un programa que cambie por ejemplo la cantidad de algo en un juego o en otro programa.
Como cheat-engine pero automático como los trainers de los juegos.

Se como leer la memoria y escribir pero no se como encontrar la variable que tiene guardado este valor.

Lo hago en windows.

Un saludo


En línea

BlackM4ster


Desconectado Desconectado

Mensajes: 499


Error, el teclado no funciona. Pulse F1 para continuar


Ver Perfil WWW
Re: Creacion de un trainer en c++
« Respuesta #1 en: 2 Octubre 2014, 08:15 am »

Usa cheat engine para sacar las direcciones de memoria y los pointers que apuntan a ellas. Luego sigues esos punteros y magia


En línea

- Pásate por mi web -
https://codeisc.com
patilanz


Desconectado Desconectado

Mensajes: 481

555-555-0199@example.com


Ver Perfil WWW
Re: Creacion de un trainer en c++
« Respuesta #2 en: 2 Octubre 2014, 11:15 am »

Pero los punteros no cambian ?
En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Creacion de un trainer en c++
« Respuesta #3 en: 2 Octubre 2014, 11:39 am »

Siempre habrá una variable fija en la memoria (el puntero), que apuntará a las variables dinámicas.
Si esta variable no fuera fija, ¿cómo se podría acceder a ella?
En línea

BlackM4ster


Desconectado Desconectado

Mensajes: 499


Error, el teclado no funciona. Pulse F1 para continuar


Ver Perfil WWW
Re: Creacion de un trainer en c++
« Respuesta #4 en: 2 Octubre 2014, 13:36 pm »

Siempre habrá una variable fija en la memoria (el puntero), que apuntará a las variables dinámicas.
Si esta variable no fuera fija, ¿cómo se podría acceder a ella?
+1
En línea

- Pásate por mi web -
https://codeisc.com
patilanz


Desconectado Desconectado

Mensajes: 481

555-555-0199@example.com


Ver Perfil WWW
Re: Creacion de un trainer en c++
« Respuesta #5 en: 2 Octubre 2014, 19:54 pm »

No os entiendo. De que puntero habláis ?? Yo por puntero entiendo algo que apunta a una dirección de memoria pero esta dirección es diferente cada vez que inicias el programa.

Hice una prueba con cheat-engine este código:

Código
  1. int a = 2;
  2. while(1){
  3. printf("%i",a++);
  4. fflush(stdin);
  5. getchar();
  6. }
Encuentro la variable a y consigo cambiar la con cheat-engine. También veo la dirección de memoria pero esta es cada vez deferente al cerrar el programa por lo que no puedo utilizarlo.

Como se llama este puntero fijo para poder buscar info sobre el ?
Me lo podéis explicar ?

Gracias
En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Creacion de un trainer en c++
« Respuesta #6 en: 2 Octubre 2014, 20:01 pm »

La dirección en memoria dentro del programa no cambia.
En general, solo cambia si es memoria dinámica.
En línea

patilanz


Desconectado Desconectado

Mensajes: 481

555-555-0199@example.com


Ver Perfil WWW
Re: Creacion de un trainer en c++
« Respuesta #7 en: 2 Octubre 2014, 20:45 pm »

La dirección que encuentro con cheat-engine cambia cada vez que cierro y abro el programa.
Intente con este codigo:

Código
  1. DWORD processes[8000], total_size;
  2. EnumProcesses(processes, sizeof(processes), &total_size);
  3. for (int i = 0; i < sizeof(processes) / total_size; i++){
  4. HANDLE process = OpenProcess(PROCESS_ALL_ACCESS, false, processes[i]);
  5. if (process != NULL){
  6. DWORD id = GetProcessId(process);
  7. if (id == 5076){//Lo veo con tasklist (luego lo hago mejor)
  8. int data = 200;
  9. if (!WriteProcessMemory(process, (LPVOID)0X0113FE78, &data, 4, 0)){
  10. cout << GetLastError();
  11. }
  12. else{
  13. cout << "good";
  14. }
  15. }
  16. }
  17. }
  18.  

Si encuentro la memoria con cheat engine y sin cerrar el programa cambio el valor de 0X0113FE78 funciona bien pero si cierro y vuelvo a abrir el programa ya la dirección no es la misma y me tira el error de 487 ERROR_INVALID_ADDRESS.
En línea

BlackM4ster


Desconectado Desconectado

Mensajes: 499


Error, el teclado no funciona. Pulse F1 para continuar


Ver Perfil WWW
Re: Creacion de un trainer en c++
« Respuesta #8 en: 3 Octubre 2014, 07:51 am »

Pero eso no tiene sentido, estás seguro de que esa variable que dices encontrar es la correcta? Igual no estás encontrando la variable en sí, sino la copia que hace de ella para el printf
En línea

- Pásate por mi web -
https://codeisc.com
patilanz


Desconectado Desconectado

Mensajes: 481

555-555-0199@example.com


Ver Perfil WWW
Re: Creacion de un trainer en c++
« Respuesta #9 en: 3 Octubre 2014, 11:12 am »

También probé con cout pero no debe de ser esto ya que encuentro solo una dirección. Utilizo visual studio 2013 puede ser una defensa o algo así que te lo ponga que todos los programas para memoria dinámica?
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Un trainer es un Troyano?¿?¿?¿ « 1 2 3 »
Análisis y Diseño de Malware
beholdthe 27 16,682 Último mensaje 11 Septiembre 2011, 05:46 am
por Milo_EscorpioNN
soccer trainer 3.0
Ingeniería Inversa
quinipilar 6 8,283 Último mensaje 18 Agosto 2011, 05:45 am
por .:UND3R:.
Me ayudas con mi trainer? « 1 2 »
Dudas Generales
ElNoob2014 11 5,513 Último mensaje 22 Junio 2014, 17:00 pm
por engel lex
Problema con trainer DLL
Programación C/C++
Axtrax 3 1,972 Último mensaje 15 Enero 2017, 01:41 am
por ivancea96
Extraer Codigos de un Trainer « 1 2 »
Ingeniería Inversa
xxDonxx 16 16,849 Último mensaje 17 Mayo 2017, 16:51 pm
por engel lex
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines