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

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Mapeao de archivos C++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Mapeao de archivos C++  (Leído 4,066 veces)
Monica_Barcelona

Desconectado Desconectado

Mensajes: 34


Ver Perfil
Mapeao de archivos C++
« en: 11 Mayo 2010, 19:29 pm »

Hola chicos/as como estais?

Bueno el caso es que tengo un codigo que mapea una libreria DLL,,que es este:

Código
  1. const long addres = 0X3DE00;
  2.  
  3. HANDLE Archivo = CreateFile("Libreria.DLL",GENERIC_READ+GENERIC_WRITE....
  4. int size = GetFileSize(Archivo,0);
  5. HANDLE MAPA =  CreateFileMapping(Archivo,0,PAGE_READWRITE,0,size,0);
  6. HANDLE View = MapViewOfFile(MAPA,FILE_MAP_ALL_ACCESS,0,0,0);
  7.  

asta alli bien,pero ahora necesito escribir un texto (char) en la direccion expuesta mas arriba la de la constante,es decir esa direccion esta dentro de la libreria,la busque con WinHex,busque en google i me encontre con la funcion memcpy,la probe pero nada,y creo que no la se utilizar bien esa funcion :S

yo probe conesto:
Código
  1. ptr = &View+addres;
  2. *ptr = "Hola";
  3.  

pero nada :'( soy tonta o pasa algo,alguna sugerencia?


un beso(K)



En línea

Horricreu
Wiki

Desconectado Desconectado

Mensajes: 290

¡La verdad os hará libres!


Ver Perfil WWW
Re: Mapeao de archivos C++
« Respuesta #1 en: 11 Mayo 2010, 20:43 pm »

WriteFile() + SetFilePointer(). O quizás WriteProcessMemory().

Saludos :P


« Última modificación: 26 Agosto 2010, 09:59 am por Horricreu » En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Mapeao de archivos C++
« Respuesta #2 en: 11 Mayo 2010, 21:39 pm »

MapViewOfFile no retorna un HANDLE sino un puntero (LPVOID). Con el ampersand sobre View lo que obtenes es la direccion de memoria de la variable y lo que realmente queres es el valor devuelto por MapViewOfFile, es decir la direccion base del mappeo hecho en memoria.

memcpy.
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Monica_Barcelona

Desconectado Desconectado

Mensajes: 34


Ver Perfil
Re: Mapeao de archivos C++
« Respuesta #3 en: 11 Mayo 2010, 22:05 pm »

osea enteindo que MapViewOfFile ya devuelve una direcion de memoria?? :S


Probe asin:
Código
  1. View = MapViewOfFile(MAPA,FILE_MAP_ALL_ACCESS,0,0,0);
  2.  
  3.  
  4.  
  5. memcpy(View,mensa,sizeof(mensa));
  6.  

i si que me escribe en el DLL pero sale mal ya que no tiene una direccion de memoria exacta a escribir:S

que boba soy :(
« Última modificación: 11 Mayo 2010, 22:22 pm por Monica_Barcelona » En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Mapeao de archivos C++
« Respuesta #4 en: 11 Mayo 2010, 23:48 pm »

Si, devuelve un puntero, siempre consulta la MSDN: MapViewOfFile.

Tenes que declarar otro puntero para usar el offset pero no con &View (por lo que explique antes) sino con View.
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Monica_Barcelona

Desconectado Desconectado

Mensajes: 34


Ver Perfil
Re: Mapeao de archivos C++
« Respuesta #5 en: 12 Mayo 2010, 23:03 pm »

No entiendo muy bien asin?

ptr = View;


??

como indico la direccion a escribir alli?

probe con esto:

ptr = View+Direccion;

pero no funciono por cierto el ptr es de tipo VOID


(K)
En línea

bizco


Desconectado Desconectado

Mensajes: 698


Ver Perfil
Re: Mapeao de archivos C++
« Respuesta #6 en: 12 Mayo 2010, 23:34 pm »

repasate los punteros.

ptr = View, para eso directamente declara View por ejemplo void *View  ahi tienes siempre tu base.
En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Mapeao de archivos C++
« Respuesta #7 en: 12 Mayo 2010, 23:50 pm »

Si, algo asi:

Código
  1. char *ptr = (char*)View + Direccion;
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Monica_Barcelona

Desconectado Desconectado

Mensajes: 34


Ver Perfil
Re: Mapeao de archivos C++
« Respuesta #8 en: 13 Mayo 2010, 13:06 pm »

Hola bueno el code me quedo asina alfinal:
Código
  1. #include <C:\Dev-Cpp\All.h>
  2.  
  3. using namespace std;
  4.  
  5. int main(void)
  6. {
  7.    const long addres = 0X3DE00;
  8.    char Mensa[]="jeje";
  9.  
  10. HANDLE Archivo = CreateFile("Mensa.dll",0,GENERIC_READ+GENERIC_WRITE,0,0,OPEN_EXISTING,0);
  11. int size = GetFileSize(Archivo,0);
  12. HANDLE MAPA =  CreateFileMapping(Archivo,0,PAGE_READWRITE,0,size,0);
  13. void* View = MapViewOfFile(MAPA,FILE_MAP_ALL_ACCESS,0,0,0);
  14.  
  15. char *ptr = (char*)View+addres;
  16. memcpy(ptr,Mensa,sizeof(Mensa));
  17.  
  18.  
  19.  
  20.  
  21. return 0;
  22. }
  23.  

pero nada,no me modifica la dll, :(


En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Mapeao de archivos C++
« Respuesta #9 en: 13 Mayo 2010, 15:02 pm »

Tenes que depurar tus programas, ya el CreateFile esta mal. Comproba los parametros (busca esta funcion en la MSDN para mayor precision):

HANDLE CreateFile(
  LPCTSTR lpFileName,
  DWORD dwDesiredAccess,
  DWORD dwShareMode,
  LPSECURITY_ATTRIBUTES lpSecurityAttributes,
  DWORD dwCreationDisposition,
  DWORD dwFlagsAndAttributes,
  HANDLE hTemplateFile
);
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines