Autor
|
Tema: Problema al limpiar variable (Leído 6,869 veces)
|
Vaagish
Desconectado
Mensajes: 875
|
Hola!! Como andan ? Bueno,, la consulta es facil hoy.. resulta que tengo un problema al limpiar una variable llamada buffer, la cual se modifica constantemente cuando llega un dato por una conexion con socket.. aca dejo el code y el problema detallado. .data? buffer db 512 dup(?) ;Bufer para guardar datos recibidos Eso en la sección .data?, luego en la sección .code: Recv: invoke recv, sock, addr buffer, sizeof buffer, 0 cmp sock, 0 je EMsg EMsg: invoke MessageBox, 0, addr buffer, addr Titulo, MB_OK jmp Recv El problema es que el "buffer" siempre queda cargado con la mayor cantidad de bytes que se le hayan pasado, por ejemplo: si cargo buffer con "Hola", y luego cargo buffer con "J" el buffer queda asi: "Jola" Ya probe con: mov buffer, 0 pero no da resultado... Tendria que recorrer el buffer byte por byte y si es <> de 0 borrarlo ?? Es esa la solucion ? Desde ya muchas gracias !!
|
|
« Última modificación: 11 Abril 2013, 22:48 pm por Vaagish »
|
En línea
|
|
|
|
MCKSys Argentina
|
Probaste algo como: mov eax, offset buffer mov byte ptr[eax], 0
antes de hacer recv?
|
|
|
En línea
|
MCKSys Argentina "Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."
|
|
|
Flamer
Desconectado
Mensajes: 1.051
crack, crack y mas crack...
|
Probaste algo como: mov eax, offset buffer mov byte ptr[eax], 0
antes de hacer recv? mmm no dudo de ti fly tu sabes muncho pero solo pienso yo que con eso solo limpiarias la primera posicion de memoria de la variable, orita no estoy en la pc apenas calando pero eso es lo que pienso y con el tema pienso que tendras que saber la longitud de la variable y hacer un bucle y limpiar cada posicion de memoria y si estoy mal corrijanme saludos flamer
|
|
|
En línea
|
|
|
|
Vaagish
Desconectado
Mensajes: 875
|
Jajajaja justo cuando estaba para responder, el foro me sugirio que mirara una nueva respuesta...
Recien pruebo esa opcion de MCK y creo que si,, digo creo porque: O limpia el primer byte, o no lo remplaza.. la cadena queda igual.. Probablemente tenga que medir la longitud de la cadena y llenarla con ceros, si.. o al menos eso deberia funcionar..
|
|
|
En línea
|
|
|
|
MCKSys Argentina
|
Cuando trabajas con cadenas terminadas en cero, si pones un cero al principio, lo demas ya no importa: la cadena tiene largo 0... Ahora, si quieres escribir si o si TODO el buffer, usa memfill y listo.
|
|
|
En línea
|
MCKSys Argentina "Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."
|
|
|
mr.blood
Desconectado
Mensajes: 150
|
Jajajaja justo cuando estaba para responder, el foro me sugirio que mirara una nueva respuesta...
Recien pruebo esa opcion de MCK y creo que si,, digo creo porque: O limpia el primer byte, o no lo remplaza.. la cadena queda igual.. Probablemente tenga que medir la longitud de la cadena y llenarla con ceros, si.. o al menos eso deberia funcionar..
Con que pongas un 0 en la posicion cadena[strlen(cadena)]=0 asi delimitas la cadena, no hace falta que limpies todo. Sa1uDoS
|
|
|
En línea
|
|
|
|
Flamer
Desconectado
Mensajes: 1.051
crack, crack y mas crack...
|
Con que pongas un 0 en la posicion cadena [strlen(cadena)]=0 asi delimitas la cadena, no hace falta que limpies todo. Sa1uDoS
delimitando la cadena como dises los bytes quedarian en memoria y se borrarian al sobreescribir en ellos pero tendria que tener cuidado de no hacer un llamado a la cadena y salgan a la luz. Osea si la variable media 10 anteriormente y delimitas a 0 y empiesas a sobreescribir hasta el byte 5 tendrias que tener cuidado de no invocar del byte 6 en adelante. Es muy buena opcion pero con cuidado saludos flamer
|
|
|
En línea
|
|
|
|
Vaagish
Desconectado
Mensajes: 875
|
Impecable! memfill do the hard work!! Osea si la variable media 10 anteriormente y delimitas a 0 y empiesas a sobreescribir hasta el byte 5 tendrias que tener cuidado de no invocar del byte 6 en adelante. Exacto.. y yo preciso el buffer en un MessageBox.. siempre me tira el buffer con la mayor cantidad de bytes guardados..
|
|
|
En línea
|
|
|
|
mr.blood
Desconectado
Mensajes: 150
|
Cualquier funcion que trabaje con cadenas lee hasta el primer 0 que encuentra, porque cualquier funcion que mida la longitud de una cadena lee hasta el primer 0 que encuentra.
Sa1uDoS
|
|
|
En línea
|
|
|
|
Flamer
Desconectado
Mensajes: 1.051
crack, crack y mas crack...
|
Cualquier funcion que trabaje con cadenas lee hasta el primer 0 que encuentra, porque cualquier funcion que mida la longitud de una cadena lee hasta el primer 0 que encuentra.
Sa1uDoS
la mento desirte pero no son cadenas son posiciones de memoria y lo de delimitar y sobreescribir en ellas creo que no funcionaria pensandolo bien ya que cuando declaro la variable buffer se asigno una sierta posicion de memoria y es la que seba a imprimir ejemplo: si buffer en piesa de 00401000 y termina en 0040100F y sobre escribe hasta 00401007 y luego manda a imprimir seba a imprimir hasta la ultima posicion que es 0040100F junto con lo que no se sobreescribio o como dise tu si pongo un 0 en la posicion 00401007 y mando a imprimir la variable hasta hay seba a imprimir saludos flamer y delimitar si se puede pasando lo sobreescribido a otra variable pero seri mas pancho Nota: en ASM cuando se declara una variable ase referencia a sierta posicion de memoria no son cadenas como en lenguajes de alto nivel y si estoy mal corrijanme y perdonen las falta de ortografia
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
La variable de tipo Object o la variable de bloque With no está establecida
Programación Visual Basic
|
rubeng
|
5
|
12,068
|
17 Septiembre 2007, 00:04 am
por rubeng
|
|
|
Problema con variable
Scripting
|
kraszic
|
6
|
3,811
|
2 Agosto 2008, 00:42 am
por kraszic
|
|
|
Error 91: Variable de tipo object o la variable de bloque with no esta estableci
Programación Visual Basic
|
brus_k10
|
2
|
6,380
|
16 Junio 2009, 16:20 pm
por cassiani
|
|
|
my.resources.source.replace(variable, variable) Ayuda codedom
.NET (C#, VB.NET, ASP)
|
70N1
|
4
|
4,790
|
19 Octubre 2011, 12:57 pm
por 70N1
|
|
|
Problema variable j
Programación C/C++
|
Ander123
|
6
|
2,531
|
28 Octubre 2012, 12:57 pm
por DickGumshoe
|
|