FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Gracias roman, ecfisa.
Es una lástima, pero no. Lo que hacen los objetos súper globales del compañero Al González es crear una clase que sí que serán vistas en múltiples aplicaciones, pero con las limitaciones clásicas de la creación de espacios compartidos, entre estas limitaciones hay una que es la de no compartir ni crear punteros en el espacio compartido (por favor corríjanme si no es así). Lo que yo intento hacer es más bien acceder directamente al espacio de memoria de otra aplicación (ya que la instancia de TIBDatabase tiene que estar en la aplicación que se abra primero), lamentablemente con dos días de búsqueda e intentos creo que no se va poder. Ahora mismo estoy intentando hacer esto abriendo las aplicaciones como subprocesos de una aplicación padre que se supone será la que comparta la base de datos, pero no me ha sido posible acceder a esa parte de la memoria en donde esta instanciado el componente, mmm estoy comenzando a creer que es imposible acceder a otro espacio de memoria que no sea el que te asigna el SO, seguiré viendo por ahí y si alguien mas tiene una que otra sugerencia ps hacérmela saber. |
#2
|
||||
|
||||
Cita:
Cita:
Quizás te interese leer esto aunque es posible que ya le hayas echado un vistazo. También puede ser de tu interés este tema y este otro. En una ocasión necesité husmear en procesos de sistema y escribí una dll que, básicamente, inyectada en un proceso leía su memoria memoria y lo escribía en el espacio de memoria de mi proceso inyector. Pude, de esa manera, obtener la información que me interesaba. Como te he comentado antes, y es por eso que no contesté previamente, este sistema no es fácil y puediendo provocar inestabilidades en tu aplicación. Pero, ya a la desesperada, es una vía interesante, al menos de investigación, y puede que termines consiguiendo lo que te propones. Saludos. |
#3
|
|||
|
|||
Haaaa después de un sueño reparador el mundo pinta diferente . Por otro lado mil gracias escafandra por los enlaces, sí que ya había pasado por esos hilos pero como en cada definición de inyección leía que se trataba de ejecutar mi código en otro espacio pues pensé (precipitadamente), que al ser su espacio estaría en las mismas, porque no vería mi espacio, pero después de un sueñin y una leída más profunda (por tu recomendación), me doy cuenta que no solo se pueden inyectar ciertas funciones, sino que también se pueden inyectar directamente estructuras y todo lo que sea escribible en memoria (o sea que quizás pueda inyectar una copia de mi instancia ya conectada), así que profundizare mas en este interesantísimo tema y espero que en un par de horas más ya tenga código funcional (que desde luego subiré para concluir este hilo).
|
#4
|
|||
|
|||
mmm esto ya se ha complicado demasiado, les cuento, hice una inyección simple de la instancia de un TIBDatabase en otro proceso, e incluso logre pasar un TIBDatabase a través de la memoria compartida que se crea con CreateFileMapping(copiando Byte a Byte de la instancia en memoria), en ambos casos me ocurrió lo mismo, sí que me copia la instancia de TIBDatabase a el nuevo espacio de memoria y sí que se ve conectada correctamente (claro sin necesidad de volver a conectar, lo probé con LoginPrompt a true, para ver felizmente que me conectaba sin mostrarme el dialogo de contraseña), ahora el problema viene cuando intento ocupar la copia de esa base de datos, me tira violaciones de acceso porque resulta que dentro del TIBDatabase hay más punteros aun (bastante razonable a decir verdad), y esto haría de la copia de una instancia de TIBDatabase toda una odisea (que no algo imposible), ya que esos punteros internos quedan apuntando a espacios inexistentes de memoria y de ahí las violaciones, así que me quedan dos caminos: 1 resignarme y dejar 5 conexiones, o 2 seguir viendo cómo acceder a todo el espacio de memoria de una aplicación y no solo a unas fracciones (me huele que optare por el segundo y jugare con una que otra api indocumentadas, CreateKernelThread me está haciendo ojitos).
Pd. En cualquier caso si logro acceder a todo el espacio de memoria de una apli, subiré como lo he hecho, porque valla tema más interesante con el que me he topado (gracias a escafandra). |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Instancia de un objeto | dao_ar | OOP | 1 | 25-06-2011 09:53:04 |
Problema con Instancia de SQL | jdattoli | SQL | 0 | 30-03-2009 20:46:06 |
instancia de sql 2000 | richy08 | MySQL | 4 | 17-12-2007 23:04:46 |
Es posible compartir carpetas por Internet utilizando compartir carpetas? | JuanErasmo | Windows | 5 | 12-02-2007 20:45:17 |
Compartir instancia de "capa Intermedia" | maro | Providers | 1 | 06-03-2004 21:00:15 |
|