Test Foro de elhacker.net SMF 2.1

Programación => Programación General => 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 (asm) [Seleccionar]

invoke CreateFile,addr Nombre, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL
mov [hFile], eax

invoke GetFileSize, [hFile], NULL
mov [nFileSize], eax


invoke MapViewOfFile, [hFile], FILE_MAP_ALL_ACCESS, 0, 0, [nFileSize]
mov [hMapFile], eax

[...]


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 (asm) [Seleccionar]
invoke CreateFileMapping, INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE , 0, eax, addr Nombre
invoke MapViewOfFile, eax, FILE_MAP_ALL_ACCESS, 0, 0, [nFileSize]
mov [hMapFile], eax

[...]


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 (asm) [Seleccionar]
invoke CreateFile,addr Nombre, GENERIC_READ or GENERIC_WRITE, NULL, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL
mov [hFile], eax
invoke GetFileSize, [hFile], NULL
mov [nFileSize], eax

invoke CreateFileMapping, [hFile], NULL, PAGE_READWRITE , 0, 0, NULL
        mov [hMapFile], eax
invoke MapViewOfFile, eax, FILE_MAP_ALL_ACCESS, 0, 0, [nFileSize]
        mov [lpMemory], eax


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  :)