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

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


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


Desconectado Desconectado

Mensajes: 875



Ver Perfil
Problema con Función..
« en: 20 Mayo 2013, 23:58 pm »

Hola amigos! Alguien me puede aclarar por que pasa esto ?

Tengo una rutina asi:

Código:

mov ecx, sizeof String1
lea esi, [String1]
lea edi, [String2]
cld
repe cmpsb
je Igual
jmp NoIgual


Esto seria un strcmp, bien.. eso funciona.. ahora si yo quiero meter eso dentro de una funcion, para luego llamarla pasandole string1 y string2 no funca.. digamos asi:

Código:

invoke strcmp, addr String1, addr String2

strcmp proto str1:DWORD, str2:DWORD

mov ecx, sizeof str1
lea esi, [str1]
lea edi, [str2]
cld
repe cmpsb
je Igual
jmp NoIgual

Igual:
mov eax, 0
jmp Exit
NoIgual:
mov eax, 1
Exit:
ret
strcmp endp


Bueno, eso es todo... ¿Por que no funca?


En línea

mr.blood

Desconectado Desconectado

Mensajes: 150


Ver Perfil
Re: Problema con Función..
« Respuesta #1 en: 21 Mayo 2013, 00:25 am »

Prueba con esto:

Código
  1. push ebp
  2. mov ebp,esp
  3. ...
  4. ...
  5. código
  6. ...
  7. ...
  8. leave
  9. ret

Esto es para que la pila no sea la misma en las distintas funciones así no se pisan valores de otro "marco" por así decirlo. La instrucción leave se encarga de volver ebp y esp a como estaban.

Yo diría que da ese problema porque no sabe donde retornar en el ret (Porque no has cambiado el "marco" del stack)

Sa1uDoS


En línea

Vaagish


Desconectado Desconectado

Mensajes: 875



Ver Perfil
Re: Problema con Función..
« Respuesta #2 en: 21 Mayo 2013, 01:00 am »

Gracias por responder Mr! Pero no funciono.. :/

No se que pasa...  :¬¬
En línea

MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.465


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: Problema con Función..
« Respuesta #3 en: 21 Mayo 2013, 01:07 am »

Y declarando la funcion con proc?

Probaste?
En línea

MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."

Vaagish


Desconectado Desconectado

Mensajes: 875



Ver Perfil
Re: Problema con Función..
« Respuesta #4 en: 21 Mayo 2013, 01:09 am »

Jajaja sii,, ese de ahi es error de mi mano al escribir en el foro :p

Podria ser posible que sizeof no funcione dentro de la funcion ? ( En este caso )
En línea

MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.465


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: Problema con Función..
« Respuesta #5 en: 21 Mayo 2013, 01:20 am »

No tengo para probar aca, pero podrias usar la lib de masm para sacar el len del string...
En línea

MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."

Vaagish


Desconectado Desconectado

Mensajes: 875



Ver Perfil
Re: Problema con Función..
« Respuesta #6 en: 21 Mayo 2013, 01:22 am »

Si, lo pense.. pero no queria usar mas librerias.. :/

Al menos para probar si es eso me va a servir...
En línea

MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.465


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: Problema con Función..
« Respuesta #7 en: 21 Mayo 2013, 01:28 am »

Por las dudas, un strlen:

Código
  1. strlen proc string:PSTR
  2. push edx
  3. xor eax,eax
  4. mov edx, dword ptr[string]
  5. _isNull:
  6. cmp byte ptr[edx+eax],0
  7. je _strlencmplte
  8. inc eax
  9. jmp _isNull
  10. _strlencmplte:
  11. pop edx
  12. ret
  13. strlen endp
  14.  

Sacado de: http://www.enigmagroup.org/forums/asm/strlen(-char*-string-)-in-masm/
En línea

MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."

Vaagish


Desconectado Desconectado

Mensajes: 875



Ver Perfil
Re: Problema con Función..
« Respuesta #8 en: 21 Mayo 2013, 01:51 am »

Gracias MCKSys, pero no quiere andar.. no es el sizeof, funciona bien...

EDITADO:

Creo que me esta tomando la dirección de memoria, no el contenido.. pues si pongo la misma cadena a comparar si funciona.. pero.. por que ? y como debería aclarar que quiero el contenido y no la dirección de memoria ?
« Última modificación: 21 Mayo 2013, 02:03 am por Vaagish » En línea

MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.465


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: Problema con Función..
« Respuesta #9 en: 21 Mayo 2013, 02:20 am »

Creo que me esta tomando la dirección de memoria, no el contenido.. pues si pongo la misma cadena a comparar si funciona.. pero.. por que ? y como debería aclarar que quiero el contenido y no la dirección de memoria ?

Quitale los [] a los LEA y prueba.

MASM deberia tomar los params directamente, sin tener que de-referenciar...
En línea

MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
PROBLEMA CON FUNCIÓN CASE:
Programación Visual Basic
CRAB 8 2,399 Último mensaje 3 Septiembre 2005, 21:28 pm
por NYlOn
Problema con la funcion Chr
Programación Visual Basic
sircid 2 1,606 Último mensaje 9 Agosto 2006, 14:50 pm
por sircid
Problema con funcion
Programación C/C++
Caster 3 2,564 Último mensaje 30 Septiembre 2012, 08:59 am
por Caster
Problema con una funcion « 1 2 »
Programación C/C++
ThronerAXE 10 3,819 Último mensaje 9 Mayo 2013, 15:28 pm
por leosansan
Problema con función en c
Programación C/C++
Gigasnike95 1 1,467 Último mensaje 14 Diciembre 2014, 12:32 pm
por ivancea96
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines