Foro de elhacker.net

Programación => ASM => Mensaje iniciado por: fary en 28 Agosto 2010, 08:37 am



Título: Fallo en encriptacion.
Publicado por: fary en 28 Agosto 2010, 08:37 am
Hola buenas, estoi intentando hacer una simple encriptacion en asm pero CREO que me falla la api lstrcat, no estoi muy seguro....

este es el code:

Código
  1. format PE console
  2. entry start
  3.  
  4. include 'c:\archivos de programa\include\win32ax.inc'
  5.  
  6. section '.code' code readable executable
  7. start:
  8.  
  9. stdcall longitud,tipo
  10.  
  11. proc longitud,cadena
  12.  
  13.    mov edx,[cadena]
  14.    sub edx,1
  15.    bucle:
  16.    add edx,1
  17.    mov bl,byte[edx]
  18.    cmp bl,NULL
  19.    jz fin
  20.    jnz seguir
  21.    seguir:
  22.        mov [letra],bl
  23.        add [contador],1
  24.        xor bl,5
  25.        invoke lstrcat,[cadena],bl ; esto es lo que me falla
  26.    jmp bucle
  27.    fin:
  28.        pop eax
  29.        invoke printf,tipo2,[cadena]
  30.        invoke scanf,tipo2,numero
  31.        ret
  32. endp
  33.  
  34. section '.data' data readable writeable
  35.  
  36.    contador dd 0
  37.    tipo db 'hola',NULL
  38.    tipo2 db '%i',0
  39.    numero dd ?
  40.    letra db ?
  41.    cadena db 'h'
  42.  
  43. section '.idata' import data readable writeable
  44.  
  45.    library  msvcrt,'msvcrt.dll',\
  46.        KERNEL32,'KERNEL32.DLL',\
  47.        USER32,'USER32.DLL'
  48.  
  49.    import msvcrt, printf,'printf',\
  50.        scanf,'scanf'
  51.    import KERNEL32,lstrcat,'lstrcat'
  52.    import USER32,MessageBoxA,'MessageBoxA'        


espero que alguien me ayude.

salu2!


Título: Re: Fallo en encriptacion.
Publicado por: kisk en 29 Agosto 2010, 00:48 am
Hola buenas, estoi intentando hacer una simple encriptacion en asm pero CREO que me falla la api lstrcat, no estoi muy seguro....

este es el code:

Código
  1. format PE console
  2. entry start
  3.  
  4. include 'c:\archivos de programa\include\win32ax.inc'
  5.  
  6. section '.code' code readable executable
  7. start:
  8.  
  9. stdcall longitud,tipo
  10.  
  11. proc longitud,cadena
  12.  
  13.    mov edx,[cadena]
  14.    sub edx,1
  15.    bucle:
  16.    add edx,1
  17.    mov bl,byte[edx]
  18.    cmp bl,NULL
  19.    jz fin
  20.    jnz seguir
  21.    seguir:
  22.        mov [letra],bl
  23.        add [contador],1
  24.        xor bl,5
  25.        invoke lstrcat,[cadena],bl ; esto es lo que me falla
  26.    jmp bucle
  27.    fin:
  28.        pop eax
  29.        invoke printf,tipo2,[cadena]
  30.        invoke scanf,tipo2,numero
  31.        ret
  32. endp
  33.  
  34. section '.data' data readable writeable
  35.  
  36.    contador dd 0
  37.    tipo db 'hola',NULL
  38.    tipo2 db '%i',0
  39.    numero dd ?
  40.    letra db ?
  41.    cadena db 'h'
  42.  
  43. section '.idata' import data readable writeable
  44.  
  45.    library  msvcrt,'msvcrt.dll',\
  46.        KERNEL32,'KERNEL32.DLL',\
  47.        USER32,'USER32.DLL'
  48.  
  49.    import msvcrt, printf,'printf',\
  50.        scanf,'scanf'
  51.    import KERNEL32,lstrcat,'lstrcat'
  52.    import USER32,MessageBoxA,'MessageBoxA'        


espero que alguien me ayude.

salu2!

Recomendaciones :

  • No uses add X,1 ni Sub X,1 usa inc X y dec X
  • Nunca pongas una etiqueta con el mismo nombre que un parametro que se puede prestar para confuciones te lo digo por el "cadena db 'h' "
  • Leete la msdn
  • Printf no arregla la pila a si que usa cinvoke no invoke

Respecto a tu duda no le pasas un puntero a nada al pasarle bl y si no mal recuerdo no se puede pushear bl si no que bx :P