• Sábado 14 de Diciembre de 2024, 19:39

Autor Tema:  Optimizar Busqueda En Memoria  (Leído 2609 veces)

krnl64

  • Miembro activo
  • **
  • Mensajes: 72
    • Ver Perfil
Optimizar Busqueda En Memoria
« en: Viernes 28 de Marzo de 2008, 15:03 »
0
Hola a todos.

Veran, estoy tratando de hacer un cheat para un juego (solo por gusto, apenas juego xD).

Abro el proceso y busco las variables pertinentes.

Pero todos los procesos empiezan en 0x10000 y acaban en 0x7FFE0FF0
(en mi sistema, o por lo menos eso me dice la estructura SYSTEM_INFO) entonces este bucle que es que lee:

Código: Text
  1.  
  2.  
  3.  
  4.        // si es un puntero a SYSTEM_INFO
  5.  
  6.       currentAddress=(DWORD)si.lpMinimumApplicationAddress;
  7.          // Obtengo la direccion donde comienza el proceso
  8.  
  9.      // Estare leyendo hasta llegar al final del espacio de direcciones del proceso
  10.       while (currentAddress < (DWORD)si.lpMaximumApplicationAddress) {
  11.      
  12.             VirtualQueryEx(...)
  13.              ReadProcessMemory(...)
  14.  
  15.      }
  16.  
  17.  
  18.  
  19.  

Pero tarda siglos en recorrer todas las direcciones. Cómo podria hacer para leer solo las direcciones desde donde empieza a donde acaba ?

Es decir, abri el regmon con el WinHex y empieza en 0x10000 y acaba en 5B187FF0
(en mi equipo)

Como puedo averiguar esa direccion ?

Gracias

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Optimizar Busqueda En Memoria
« Respuesta #1 en: Viernes 28 de Marzo de 2008, 15:15 »
0
Si solo te interesan las variables globables (es decir, ni memoria dinamica ni pila) podes solo recorrer las secciones de datos del ejecutable (ver formato PE).

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

krnl64

  • Miembro activo
  • **
  • Mensajes: 72
    • Ver Perfil
Re: Optimizar Busqueda En Memoria
« Respuesta #2 en: Viernes 28 de Marzo de 2008, 15:34 »
0
O sea, que casi  cualquier variable que quiera buscar estara en la seccion .DATA o DATA?  del PE en memoria ?

Voy a ver si asi soluciono el asunto.

Gracias !!

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Optimizar Busqueda En Memoria
« Respuesta #3 en: Viernes 28 de Marzo de 2008, 15:49 »
0
Estimo que si pero hay un campo en cada seccion llamado Characteristics que especifica el uso de la misma. En este caso (esto es todo para algo generico por supuesto) no te interesan las secciones que tengan read only (no pueden haber variables ahi, a menos que despues en run time le den permisos de escritura con VirtualProtect), las que tengan execute (no suele ir el codigo mezclado con las variables, un compilador no lo hace al menos), las que sean discardable (se pueden descargar y por lo tanto solo se usan al cargar el ejecutable).

Para esto necesitas hacer uso del formato PE.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

krnl64

  • Miembro activo
  • **
  • Mensajes: 72
    • Ver Perfil
Re: Optimizar Busqueda En Memoria
« Respuesta #4 en: Viernes 28 de Marzo de 2008, 16:11 »
0
Si, me fui directo al formato PE. Estoy mirando como obtener los datos que necesito del PE en memoria.

Gracias

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Optimizar Busqueda En Memoria
« Respuesta #5 en: Viernes 28 de Marzo de 2008, 17:01 »
0
PE Coff.

Algo de lo que recuerdo ahora mismo:
IMAGE_DOS_HEADER
IMAGE_NT_HEADERS32
IMAGE_SECTION_HEADER

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

krnl64

  • Miembro activo
  • **
  • Mensajes: 72
    • Ver Perfil
Re: Optimizar Busqueda En Memoria
« Respuesta #6 en: Viernes 28 de Marzo de 2008, 17:41 »
0
mm,  tengo un problemilla.


Si Pointer to Raw Data de la seccion .data vale 0x43000 accediendo a esa direccion debere de leer el inicio de la seccion no ?

Es que leo esa direccion con ReadProcessMemory y el resultado es 0.

Tiene algo que ver que se este ejecutando el proceso ?

Gracias

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Optimizar Busqueda En Memoria
« Respuesta #7 en: Viernes 28 de Marzo de 2008, 17:49 »
0
VirtualAddress + BaseAddress si no recuerdo mal.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

krnl64

  • Miembro activo
  • **
  • Mensajes: 72
    • Ver Perfil
Re: Optimizar Busqueda En Memoria
« Respuesta #8 en: Viernes 28 de Marzo de 2008, 18:50 »
0
Gracias, ya consegui la seccion.

Salu2

krnl64

  • Miembro activo
  • **
  • Mensajes: 72
    • Ver Perfil
Re: Optimizar Busqueda En Memoria
« Respuesta #9 en: Lunes 31 de Marzo de 2008, 22:24 »
0
Bueno, aunque consegui obtener lo que deseaba ahora me pregunto como buscan el winhex o el OllyDbg por todo el espacio de direcciones del proceso.

Son muchas direcciones, como podria hacer una busqueda lo mismo de rapida ?

Solo se me ocurre usar unos cuantos threads y que cada uno se encargue de un rango fijo de direcciones.

Pueden darme alguna otra idea o consejo ?

Gracias

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Optimizar Busqueda En Memoria
« Respuesta #10 en: Lunes 31 de Marzo de 2008, 23:29 »
0
Depura el codigo que te interesa.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

krnl64

  • Miembro activo
  • **
  • Mensajes: 72
    • Ver Perfil
Re: Optimizar Busqueda En Memoria
« Respuesta #11 en: Martes 1 de Abril de 2008, 00:32 »
0
No entendi tu respuesta.
Que depure mi codigo o el del alguno de esos programas ?

Si es que depure mi code, no entiendo como porque es un bucle con 3 lineas

Puedes ser un poco mas preciso ?

Gracias

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Optimizar Busqueda En Memoria
« Respuesta #12 en: Martes 1 de Abril de 2008, 00:37 »
0
El codigo de los programas que queres emular.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

krnl64

  • Miembro activo
  • **
  • Mensajes: 72
    • Ver Perfil
Re: Optimizar Busqueda En Memoria
« Respuesta #13 en: Martes 1 de Abril de 2008, 00:38 »
0
Gracias por el consejo.

Salu2