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

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  ASM (Moderador: Eternal Idol)
| | | |-+  [FASM] Problema con matrices
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [FASM] Problema con matrices  (Leído 3,956 veces)
Yuki

Desconectado Desconectado

Mensajes: 80


El error es una muestra de la incompetencia.


Ver Perfil WWW
[FASM] Problema con matrices
« en: 8 Abril 2016, 22:29 pm »

Buenas, estoy creando un proyecto en ensamblador bastante interesante, pero debido a algo no puedo avanzar.

Estoy tratando de buscar las DLLs del la ruta actual del programa en ejecución y almacenarlos en una Matriz, pero cuando quiero utilizarlos, solo aparece el nombre de una sola DLL en la matriz de longitud 2.

Código:
start:
        ; Obtenemos la dirección actual del programa.
        invoke GetModuleFileNameA,0,ProgramaRuta,255 ; Obtenemos la ruta actual del programa.
        cmp eax,0
        jbe ErrorRutaInvalida

        ; El siguiente código agarra la dirección actual del programa y la modifica para FindFirstFile.
        ; Ejemplo: "C:\Users\DarkBlue\FASM\Programa.exe" a "C:\Users\DarkBlue\FASM\*.dll"
        ; Sin apis extras :v
        mov ebx,ProgramaRuta
        mov ecx,256
BuscarCaracter:
        dec ecx
        cmp ecx,0
        je ErrorEcxEsCero
        cmp byte[ebx+ecx],"\"
        je FinDeTruncado
        mov byte[ebx+ecx],0
        jne BuscarCaracter
FinDeTruncado:
        mov dword [ebx+ecx+1],"*.dl"
        mov byte [ebx+ecx+5],"l"

        ; Aca vamos a buscar las DLLS.
        invoke FindFirstFile,ProgramaRuta,WFD
        cmp eax,-1
        je ErrorFindFirstFile
        mov [PtrFindFirstFile],eax
        mov ebx,-4
BuscarDlls: ; ZONA DE ERROR.
        add ebx,4
        mov dword[MatrizArchivos+ebx],WFD.cFileName
        invoke FindNextFile,[PtrFindFirstFile],WFD
        cmp eax,0
        jne BuscarDlls

        invoke FindClose,[PtrFindFirstFile]
        cmp eax,0
        je ErrorFindClose

        invoke MessageBox,0,dword[MatrizArchivos],0,0
        invoke MessageBox,0,dword[MatrizArchivos+4],0,0

        xor ebx,ebx
        jmp Salir

En la ruta del programa hay 2 DLLs, "Biblioteca.dll y Libreria.dll", a travez de FindFirstFile obtengo Biblioteca.dll y la almacena en MatrizArchivos+EBX (en el primer sondeo es 0) y en la segunda DLL "Libreria.dll" se obtiene a travez de FindNextFile, si este no produjo error retorna a BuscarDlls, EBX se establece en 4 y se añade el puntero al nombre de la DLL en MatrizArchivos+EBX (EBX = 4).

Pero cuando trato de visualizar mediante un MessageBox, solo aparece "Libreria.dll" en ambas matrices.

¿Que estoy haciendo mal?


En línea

Yuki

Desconectado Desconectado

Mensajes: 80


El error es una muestra de la incompetencia.


Ver Perfil WWW
Re: [FASM] Problema con matrices
« Respuesta #1 en: 10 Abril 2016, 02:22 am »

Disculpen la auto-respuesta, se cual es el problema, la Matriz "MatrizArchivos" apunta, en ambas matrices al mismo puntero de cadena.

MatrizArchivos[0] = &401FD5 ' Libreria.dll
MatrizArchivos[1] = &401FD5 ' Libreria.dll

La pregunta ahora es la siguiente ¿como puedo hacer para copiar en la matriz diferentes cadenas?


En línea

fary


Desconectado Desconectado

Mensajes: 1.062



Ver Perfil WWW
Re: [FASM] Problema con matrices
« Respuesta #2 en: 10 Abril 2016, 21:46 pm »

Tienes que crear la siguiente estructura:

Array -> Dirección donde se encuentran los punteros de los datos

[Array] -> apunta al primer elemento del array
[Array+4] -> Apunta al siguiente elemento
[Array+8] -> Apunta al siguiente elemento

Y así sucesivamente...

No sé si me he explicado bién  :-\

saludos.
En línea

Un byte a la izquierda.
Yuki

Desconectado Desconectado

Mensajes: 80


El error es una muestra de la incompetencia.


Ver Perfil WWW
Re: [FASM] Problema con matrices
« Respuesta #3 en: 11 Abril 2016, 00:24 am »

Tienes que crear la siguiente estructura:

Array -> Dirección donde se encuentran los punteros de los datos

[Array] -> apunta al primer elemento del array
[Array+4] -> Apunta al siguiente elemento
[Array+8] -> Apunta al siguiente elemento

Y así sucesivamente...

No sé si me he explicado bién  :-\

saludos.
Te explicaste bién, pero el problema es que cada elemento del array contiene el mismo valor (dirección de la cadena "Libreria.dll"), la pregunta es como hacer para copiar la cadena obtenida por WFD.cFileName, crear nuevos punteros y aplicarlos a los elementos.
En línea

fary


Desconectado Desconectado

Mensajes: 1.062



Ver Perfil WWW
Re: [FASM] Problema con matrices
« Respuesta #4 en: 11 Abril 2016, 16:42 pm »

Lo único que tienes que hacer es reservar memoria con LocalAlloc ó malloc y guardar el puntero en tu estructura de punteros.

 
En línea

Un byte a la izquierda.
Yuki

Desconectado Desconectado

Mensajes: 80


El error es una muestra de la incompetencia.


Ver Perfil WWW
Re: [FASM] Problema con matrices
« Respuesta #5 en: 14 Abril 2016, 06:55 am »

Lo único que tienes que hacer es reservar memoria con LocalAlloc ó malloc y guardar el puntero en tu estructura de punteros.

 

Suponia que era algo así, pero no queria tener que usar estas apis, pero bueno, gracias! tema resuelto.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema para pasar un codigo de MASM a FASM
ASM
ZoNike 4 4,640 Último mensaje 2 Noviembre 2009, 02:17 am
por YST
[problema] SOCKET EN FASM
ASM
afdlkglfgfdgfhgf 1 3,535 Último mensaje 29 Marzo 2010, 09:25 am
por bizco
PRoblema en fasm intentando usar consola
ASM
fary 3 4,111 Último mensaje 1 Agosto 2010, 21:41 pm
por Eternal Idol
Problema al pasar cadenas a los campos de un struct en FASM
ASM
Swicher 5 4,479 Último mensaje 8 Febrero 2013, 03:49 am
por Swicher
Problema con OllyDbg y ejecutables en FASM
Ingeniería Inversa
fary 3 2,108 Último mensaje 13 Diciembre 2015, 01:48 am
por fary
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines