Domingo 15 de Diciembre de 2024, 09:48
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
Compartir memoria en C++, ¿alguna libreria?
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Compartir memoria en C++, ¿alguna libreria? (Leído 2200 veces)
hfe.ib
Nuevo Miembro
Mensajes: 3
Compartir memoria en C++, ¿alguna libreria?
«
en:
Martes 6 de Enero de 2009, 22:19 »
0
Buenos dias a todos, queria saber si alguno podria ayudarme con este inconveniente:
Tengo una DLL con una variable tipo char llamemosla A. mi problema es que quisiera "atacar" esa variable, desde todas las instancias de la DLL (La DLL utiliza funciones Hook) y para ello creo que deberia compartir un pedacito de memoria... pero no se como hacerlo. Si alguno conoce una libreria documentada se lo agradezco muchisimo.
Muchas gracias de antemano.
Tweet
Eternal Idol
Moderador
Mensajes: 4696
Nacionalidad:
Re: Compartir memoria en C++, ¿alguna libreria?
«
Respuesta #1 en:
Martes 6 de Enero de 2009, 23:33 »
0
La verdad no se entiende que es lo que queres hacer pero no suena muy bien ...
Sharing Files and Memory
.
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.
hfe.ib
Nuevo Miembro
Mensajes: 3
Re: Compartir memoria en C++, ¿alguna libreria?
«
Respuesta #2 en:
Miércoles 7 de Enero de 2009, 00:18 »
0
Perdon es cierto que es confuso porque es algo que he preguntado varias veces y nadie me supo responder. Voy a detallar la teoria que sé acerca del tema, para ver si llegamos a la solucion:
Yo creo un ejecutable que hace uso de una DLL. Esta DLL es un Hook de teclado que guarda en una variable cada tecla que se presiona, para cualquier proceso (Es decir... si saco del foco a la aplicacion las teclas que se presionen sobre otras aplicaciones tambien son guardadas. El mejor ejemplo es el Keylogger). Mi problema radica en que para cada proceso, tengo una instancia distinta de la DLL... de manera que si guardo las teclas en la variable char *teclas (p.e) voy a tener un char *teclas
solo
con las teclas presionadas en la respectiva aplicacion en foco.
Me gustaria saber como "Compartir" una variable entre todas las instancias de la DLL hook. osea que *teclas almacene las teclas de todos los procesos.
Bueno ojala haya aclarado un poco mi propia duda! jajaja.
Muchisimas gracias por tu atencion.
Karman
Miembro activo
Mensajes: 84
Re: Compartir memoria en C++, ¿alguna libreria?
«
Respuesta #3 en:
Miércoles 7 de Enero de 2009, 06:57 »
0
hace mucho que no posteo acá... pero esto es lo que buscas:
en el H:
Código: Text
// ------------------------------------------------------
// SharedMemoryLib.h
// Shared memory functions HEADERS
// by Ni Idea, modificated by Karman
// ------------------------------------------------------
#ifndef _SHAREDMEM_H_
#define _SHAREDMEM_H_
#include <windows.h>
#include <stdio.h>
typedef struct _SharedMemory_{
HANDLE hFile;
LPDWORD hView;
}SharedMemory,*PSharedMemory;
#ifdef _cplusplus
extern "C"
{
#endif
BOOL CreateSharedMemoryArea(PSharedMemory psm,LPSTR SMName,DWORD size);
BOOL OpenSharedMemory(PSharedMemory psm,LPSTR SMName);
BOOL DestroySharedMemoryArea(PSharedMemory psm);
VOID WriteOnSharedMemory(PSharedMemory psm,DWORD data, DWORD position);
VOID ReadFromSharedMemory(PSharedMemory psm,LPDWORD data, DWORD position);
#ifdef _cplusplus
}
#endif
#endif /* _SHAREDMEM_H_ */
y en el C:
Código: Text
// ------------------------------------------------------
// Shared memory func. by Ni Idea, modificated by Karman
// ------------------------------------------------------
#include <SharedMemLib.h>
//--------------------------------------------------------
//
//--------------------------------------------------------
BOOL CreateSharedMemoryArea(PSharedMemory psm,LPSTR SMName,DWORD size){
psm->hFile = CreateFileMapping(INVALID_HANDLE_VALUE,NULL,PAGE_READWRITE,0,sizeof(DWORD)*size,SMName);
if(!psm->hFile)return FALSE;
psm->hView = MapViewOfFile(psm->hFile,FILE_MAP_ALL_ACCESS,0,0,0);
if(!psm->hView){
CloseHandle(psm->hFile);
return FALSE;
}
return TRUE;
}
//--------------------------------------------------------
//
//--------------------------------------------------------
BOOL OpenSharedMemory(PSharedMemory psm,LPSTR SMName){
psm->hFile = OpenFileMapping(FILE_MAP_ALL_ACCESS,FALSE,SMName);
if(!psm->hFile)return FALSE;
psm->hView= MapViewOfFile(psm->hFile,FILE_MAP_ALL_ACCESS,0,0,0);
if(!psm->hView){
CloseHandle(psm->hFile);
return FALSE;
}
return TRUE;
}
//--------------------------------------------------------
//
//--------------------------------------------------------
BOOL DestroySharedMemoryArea(PSharedMemory psm){
if(UnmapViewOfFile(psm->hView)&&CloseHandle(psm->hFile))return TRUE;
return FALSE;
}
//--------------------------------------------------------
//
//--------------------------------------------------------
VOID WriteOnSharedMemory(PSharedMemory psm,DWORD data, DWORD position){
psm->hView[position] = data;
}
//--------------------------------------------------------
//
//--------------------------------------------------------
VOID ReadFromSharedMemory(PSharedMemory psm,LPDWORD data, DWORD position){
*data = psm->hView[position];
}
uso:
Código: Text
#define shmemname "un nombre!!! xD"
...
SharedMemory MyShMem;
//Creamos un bloque de memoria compartida...
if(!CreateSharedMemoryArea(&MyShMem,shmemname,2)){
MessageBox(NULL,"Fallo al alocar memoria...",0,0);
return FALSE;
}
//Inicializamos...
WriteOnSharedMemory(&MyShMem,variable,0);
****
if(!OpenSharedMemory(&MyShMem,shmemname))
return FALSE;
ReadFromSharedMemory(&MyShMem,(LPDWORD)&variable,0);
S2
www.inexinferis.com.ar
-. Karman .-
hfe.ib
Nuevo Miembro
Mensajes: 3
Re: Compartir memoria en C++, ¿alguna libreria?
«
Respuesta #4 en:
Miércoles 7 de Enero de 2009, 07:21 »
0
Jajajajaj Espectacular!!!!! lo mejor de todo es que yo me habia re estudiado al detalle los articulos que hiciste del API de Windows!!! EXCELENTES!!! lo nunico que no pude entender era eso, y como hacia tiempo que no actualizabas la pagina, no te escribi.
Mil gracias Karman!!!.
Eternal Idol
Moderador
Mensajes: 4696
Nacionalidad:
Re: Compartir memoria en C++, ¿alguna libreria?
«
Respuesta #5 en:
Miércoles 7 de Enero de 2009, 09:19 »
0
No le veo mucho sentido a que el Explorer tenga en memoria lo tecleado en el Notepad pero bueno ... lo que necesitabas esta en el enlace que deje ahi arriba.
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.
Karman
Miembro activo
Mensajes: 84
Re: Compartir memoria en C++, ¿alguna libreria?
«
Respuesta #6 en:
Miércoles 7 de Enero de 2009, 09:24 »
0
Cita de: "hfe.ib"
y como hacia tiempo que no actualizabas la pagina, no te escribi.
Mil gracias Karman!!!.
es que ando con poco tiempo... entre el laburo y la facu... no me quedan ganas... je
S2
www.inexinferis.com.ar
-. Karman .-
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
Compartir memoria en C++, ¿alguna libreria?