Foro de elhacker.net

Programación => ASM => Mensaje iniciado por: Vaagish en 22 Mayo 2013, 20:36 pm



Título: [Ayuda] Problema con funcion send y pisar datos
Publicado por: Vaagish en 22 Mayo 2013, 20:36 pm
Buenas amigos, como andan ?

Últimamente estoy haciendo muchas preguntas, pero bueno, veamos el lado positivo, hay rotatividad en el foro   :silbar:

Bueno, tengo el siguiente problema :

Código:

Buscar proc FtoF:DWORD

invoke FindFirstFile, FtoF, addr SFile
cmp eax, -1
je NoEncontrado
mov Hand, eax


Buccle:
invoke wsprintf, addr Bufi, addr Envio, addr SFile.cFileName
invoke send, sock, addr Bufi, sizeof Bufi, 0
cmp eax, SOCKET_ERROR
je ErSo
invoke FindNextFile, Hand, addr SFile
cmp eax, 0
je Salida
jmp Buccle

ErSo:
invoke WSAGetLastError
invoke dwtoa, eax, addr ErrNa
invoke MessageBox, 0, addr ErrNa, addr Titulo, MB_OK

Salida:
invoke FindClose, addr Hand
jmp Fin

NoEncontrado:
invoke send, sock, addr NoE, sizeof NoE, 0

Fin:
ret
Buscar endp


El problema al parecer es que el "Buccle" se ejecuta mas rápido de lo que el cliente puede procesar, o algo asi.. porque si pongo un mensaje entre ciclo y ciclo del bucle los datos llegan, pero si dejo la rutina asi, sin pausa alguna, al parecer algo se pisa el palito,, pero tampoco sale error de send..  :-\


Título: Re: [Ayuda] Problema con funcion send y pisar datos
Publicado por: x64core en 24 Mayo 2013, 18:28 pm
Pone el codigo entero, al menos todo lo relacionado al problema.
ami me da pereza cuando leo codigos imcompletos por ejemplo tipos de variables, etc


Título: Re: [Ayuda] Problema con funcion send y pisar datos
Publicado por: Vaagish en 28 Mayo 2013, 21:26 pm
Hola.. Perdon que respondo tan tarde, recien veo que no esta mi comentario anterior.. el problema ya esta resuelto.. Pongo la solucion:

Código:

SFile WIN32_FIND_DATA <> (Estructura para busqueda de archivos)
NoE db "MSG|Archivo no encontrado0", 0
EFile db "File|%s0", 0
EFold db "Fold|%s0", 0

ThreadBus proc FtoF:DWORD

invoke FindFirstFile, FtoF, addr SFile
cmp eax, -1
je NoEncontrado
mov Hand, eax

Buccle:

invoke FindNextFile, Hand, addr SFile
cmp eax, 0
je Salida

cmp SFile.cFileName, PUNTO
je Buccle

cmp SFile.dwFileAttributes, FILE_ATTRIBUTE_DIRECTORY
jne Files
;Envio las carptas
invoke wsprintf, addr Bufi, addr EFold, addr SFile.cFileName
invoke send, Sock, addr Bufi, sizeof Bufi, 0
jmp Buccle

Files:
;Envio los archivos
invoke wsprintf, addr Bufi, addr EFile, addr SFile.cFileName
invoke send, Sock, addr Bufi, sizeof Bufi, 0
jmp Buccle

Salida:
invoke FindClose, addr Hand
jmp Fin

NoEncontrado:
invoke send, Sock, addr NoE, sizeof NoE, 0

Fin:

ret
ThreadBus endp


Justo ahora lo estoy por arreglar, porque funciona bastante bien, pero no es optimo del todo :p
Esta funcion (ThreadBus) tiene que ser llamada como un thread para que funcione bien..

Saludos!