Autor
|
Tema: [FASM] Problema con matrices (Leído 4,225 veces)
|
Yuki
Desconectado
Mensajes: 80
El error es una muestra de la incompetencia.
|
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. 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
Mensajes: 80
El error es una muestra de la incompetencia.
|
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
|
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
Mensajes: 80
El error es una muestra de la incompetencia.
|
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
|
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
Mensajes: 80
El error es una muestra de la incompetencia.
|
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
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Problema para pasar un codigo de MASM a FASM
ASM
|
ZoNike
|
4
|
4,806
|
2 Noviembre 2009, 02:17 am
por YST
|
|
|
[problema] SOCKET EN FASM
ASM
|
afdlkglfgfdgfhgf
|
1
|
3,714
|
29 Marzo 2010, 09:25 am
por bizco
|
|
|
PRoblema en fasm intentando usar consola
ASM
|
fary
|
3
|
4,317
|
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,713
|
8 Febrero 2013, 03:49 am
por Swicher
|
|
|
Problema con OllyDbg y ejecutables en FASM
Ingeniería Inversa
|
fary
|
3
|
2,325
|
13 Diciembre 2015, 01:48 am
por fary
|
|