FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Lectura de variables
Saludos. Me gustaría saber si hay alguna manera de leer variables y zonas de memoria de otra aplicación con delphi, y si la hay, ¿Me podéis dar algo de información? Gracias a todos que siempre me ayudáis.
|
#2
|
|||
|
|||
Hola,
en teoria, variables no, puesto que se sustituye su simbolo por una dirección de memoria al momento de compilarse (si se han dejado las debug options activadas, no se sustituyen) y ejecutarse (objetos si: primero encontrando la form con findwindow y luego usar FindComponent). Eso si, una dirección de memoria conocida si puede leerse, mediante una funcion Peek o equivalente. Saludos |
#3
|
|||
|
|||
Ahora me gustaría saber lo siguiente: Como puedo saber la vida de un juego (por ejemplo). Mi teoría es:
1· Desensamblar y buscar la región de memoria y la línea que llama a esa región, ya que en algunos ordenadores puede cambiar. Y usar esa línea para localizar la región. ¿Eso está bien o hay alguna equivocación? |
#4
|
|||
|
|||
ufff... eso es complicadillo... en principio tendrias que cargar un juego en un debugger o lector dinamico de memoria....luego, poner 'flags' a las zonas de memoria que cambian y, mirando en el momento que te maten una vida, cual es el byte (o integer etc) que se ha reducido. Otra manera es grabar una partida, cargarla y acto seguido matarte (sin que cambie nada mas), grabar, y comparar los dos archivos (inicio->ejecutar->fc.com /b archivo1 archivo2 >> comparacion.txt). Este sistema por eso funcionaba bien en los juegos antiguos, pero en los modernos, donde en un segundo te cambia hasta la paleta de colores o las texturas, te sera bastante dificil encontrar en que posicion de memoria se guardan las vidas . Prueba eso, graba con 5 vidas, busca el caracter nº5, graba con 4, buscar el nº4, etc... y si tienes suerte que se te modifica en alguna posición concreta, quiza sea aquella la posición.
PD: no estoy seguro, pero creo que ya habran programas concretos para estas cosas X/ ... |
#5
|
|||
|
|||
Tranquilo, hay un programa llamado cheatengine, que debuggea y encuentra las zonas de memoria que le has dicho. Si tengo 5 vidas busco 5, si tengo 4 vidas busco 4... El problema no es ese, es como usarlo en delphi. Sobre debuggear y desensamblar estoy hecho un hacha xD.
|
#6
|
|||
|
|||
pero...a ver...en delphi no tienes vidas a no ser que haya algo que aun no haya descubierto yo...como quieres usar el 'cheatengine' este en delphi?
|
#7
|
|||
|
|||
Hay jaja no me refiero a eso. Si no usar cheat engine para LEER ZONAS DE MEMORIA DE UN JUEGO, no usar delphi como juego xD.
|
#8
|
|||
|
|||
ya ya pero q tiene que ver delphi en esto??... nada curiosidad namas
|
#9
|
|||
|
|||
No hay ninguna forma de leer una zona de memoria desde delphi. Por ejemplo:
Y esto lee la zona de memoria 080000, tamaño byte (los dos primeros digitos hexadecimales), y los almacena en vidas (variable integer). A eso me refiero... |
#10
|
|||
|
|||
si...lo que se llama un 'peek'...voy a buscar que a mi tambien me interesa... a ver si alguien del foro ya lo sabe
|
#11
|
|||
|
|||
Si nos ayudamos los dos mejor, yo te digo que si vas ha hacer algo parecido, usa cheat engine. Agrégame a ezeali@msn.com y hablamos directamente, pero luego ponemos por aquí el resultado de lo que hemos conseguido para compartirlo con los demás.
|
#12
|
|||
|
|||
no, no, no por los juegos, solo q se que en c si existe peek y es sencillo tambien acceder a una dirección de memoria (integer *p = 0x0a000) solo que en delphi me esta dando errores X/ leyendola directamente de esta manera, y no encuentro la funcion Peek susodicha...
|
#13
|
|||
|
|||
Voy a buscar to también alguna especie de traducción para peek en delphi.
|
#14
|
||||
|
||||
Cita:
Hicieron que se me piante un lagrimón. Me voy a ver mi commodore 64 y vuelvo. Saludos. |
#15
|
|||
|
|||
quiza 'peek' esta obsoleto. Readmem o memread tampoco lo encuentro. no encuentro manera de leer una direccion de memoria directamente...
|
#16
|
|||
|
|||
¿Cómo? Pero la memoria que quiero leer es de un programa, ¿o la memoria es la misma para todos los programas?
|
#17
|
|||
|
|||
hombre, la memoria es la memoria entera del ordenador... cada programa va reservando trozos segun los necesite (el getmem...) no se bien bien el funcionamiento, pero creo que se va asociando cada trozo al programa con un identificador del programa, que debe ser lo que lee el cheat engine este..si la duda es si la direccion es dinamica y cambia cada vez, creo que si (?)
|
#18
|
|||
|
|||
¿Entonces como puedo saber que memoria se le ha dado a una aplicación? Por ejemplo:
Imáginate que en mi ordenador la vida está alojada en 089765, yo creo que 9765 no cambia, solo cambia 08 que es la memoria que le ha dado el ordenador, ¿No? (CORREGIDME SI ME EQUIVOCO). Entonces
Yo pienso que debería ser algo así. Corregidme si hay algo mal. |
#19
|
|||
|
|||
me gustaria ayudarte pero no se bien bien como va: se que la memoria esta paginada (00000:00000) de cierta manera, pero no se como el sistema operativo la va adjudicando a cada programa. A ver si alguien mas del foro lo sabe...
|
#20
|
|||
|
|||
Vale, ahora lo tengo en un memo. ¿Como selecciono un texto de un memo?
Yo se que para copiar parte de un string a otro: repeat copiado:=copiado+texto[i]; i:=i+1; until me_de_la_gana Pero de un memo pff... Ni idea. Lo siento. |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Lectura del USB por Interrupción | cisco | Varios | 0 | 25-10-2007 18:13:29 |
Lectura de un FTP con idHTTP | gluglu | Internet | 2 | 05-05-2007 00:35:50 |
Problema de lectura de un cd | dragondetierra | Varios | 0 | 18-02-2007 18:58:52 |
Test de lectura | Héctor Randolph | Humor | 9 | 26-10-2005 00:11:40 |
variables variables (manual php) | salvica | PHP | 0 | 25-09-2005 16:44:52 |
|