Foro de elhacker.net

Programación => ASM => Mensaje iniciado por: Иōҳ en 10 Diciembre 2011, 01:25 am



Título: Mapeo de Fichero
Publicado por: Иōҳ en 10 Diciembre 2011, 01:25 am
Hola que tal... vengo ya frustrado... tratando de poder resolver este problema y no encuentro la solución.

aquí les dejo mi code:

Código
  1. invoke CreateFile,addr Nombre, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL
  2. mov [hFile], eax
  3.  
  4. invoke GetFileSize, [hFile], NULL
  5. mov [nFileSize], eax
  6.  
  7.  
  8. invoke MapViewOfFile, [hFile], FILE_MAP_ALL_ACCESS, 0, 0, [nFileSize]
  9. mov [hMapFile], eax
  10.  
  11. [...]
  12.  

Todo funciona bien hasta llegar a MapViewOfFile, porque devuelve 0, GetLastError me devuelve 6, significa que el handle es inválido.

También hice esto

Código
  1. invoke CreateFileMapping, INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE , 0, eax, addr Nombre
  2. invoke MapViewOfFile, eax, FILE_MAP_ALL_ACCESS, 0, 0, [nFileSize]
  3. mov [hMapFile], eax
  4.  
  5. [...]
  6.  

Según el ejemplo de la msdn y me devuelve the starting address of the mapped view, lo malo es que cuando accedo a ella está llena de 0s =/, y la verdad no encuentro el problema =/.

Haber si alguien me pueda ayudar D=

Nox.


Título: Re: Mapeo de Fichero
Publicado por: Eternal Idol en 10 Diciembre 2011, 01:37 am
En el primer codigo NO estas creando el mapping (ese HANDLE es el que se necesita y no el de un archivo), estos son los pasos:

1) CreateFile
2) CreateFileMapping
3) MapViewOfFile

En el segundo no hay ningun problema pero es para crear memoria compartida.


Título: Re: Mapeo de Fichero
Publicado por: Иōҳ en 10 Diciembre 2011, 02:13 am
Sisi, tienes mucha razón EI.

Aquí el code funcional por si a alguien le sirve

Código
  1. invoke CreateFile,addr Nombre, GENERIC_READ or GENERIC_WRITE, NULL, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL
  2. mov [hFile], eax
  3. invoke GetFileSize, [hFile], NULL
  4. mov [nFileSize], eax
  5.  
  6. invoke CreateFileMapping, [hFile], NULL, PAGE_READWRITE , 0, 0, NULL
  7.        mov [hMapFile], eax
  8. invoke MapViewOfFile, eax, FILE_MAP_ALL_ACCESS, 0, 0, [nFileSize]
  9.        mov [lpMemory], eax
  10.  

Había un problema en los Flags de CreateFile y CreateFileMapping, a uno le daba sólo leer, pero al otro le daba permisos de lectura y escritura XD, y cuando le di los mismo permisos a los 2, estubo todo bien.

Mil gracias por la ayuda :D!

Nox.


Título: Re: Mapeo de Fichero
Publicado por: Eternal Idol en 10 Diciembre 2011, 12:38 pm
De nadas  :)