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


 


Tema destacado: [Encuesta] ¿Qué editor de código utilizas? (2014)    


+  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 2,712 veces)
Vaagish


Desconectado Desconectado

Mensajes: 770



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

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: 148


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

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: 770



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

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

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

MCKSys Argentina
Colaborador
***
Desconectado Desconectado

Mensajes: 2.718


Diviérte crackeando, que para eso estamos!


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

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: 770



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

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
Colaborador
***
Desconectado Desconectado

Mensajes: 2.718


Diviérte crackeando, que para eso estamos!


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

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: 770



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

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
Colaborador
***
Desconectado Desconectado

Mensajes: 2.718


Diviérte crackeando, que para eso estamos!


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

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: 770



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

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 por Vaagish » En línea

MCKSys Argentina
Colaborador
***
Desconectado Desconectado

Mensajes: 2.718


Diviérte crackeando, que para eso estamos!


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

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 la funcion mail() en php
Desarrollo Web
fredi123 7 6,789 Último mensaje 26 Febrero 2005, 01:13
por Cuantico
Problema con función javascript
Desarrollo Web
kaliman_jr 0 405 Último mensaje 26 Junio 2005, 23:10
por kaliman_jr
PROBLEMA CON FUNCIÓN CASE:
Programación Visual Basic
CRAB 8 1,171 Último mensaje 3 Septiembre 2005, 21:28
por NYlOn
Problema con la funcion Chr
Programación Visual Basic
sircid 2 628 Último mensaje 9 Agosto 2006, 14:50
por sircid
Problema con una funcion « 1 2 »
Programación C/C++
ThronerAXE 10 926 Último mensaje 9 Mayo 2013, 15:28
por leosansan
Powered by SMF 1.1.20 | SMF © 2006-2008, Simple Machines