Un simple ejemplo... después de estar resolviendo un "Crackme" de CrueHead en el que pasaba los carácteres a Mayúscula sumandole 20... se me ocurrió esta función...

Código: Seleccionar todo

    include 'F:\Cracking\fasmw16931\INCLUDE\WIN32AX.INC'
     
    .data
    poison db 'Hola Indetectables... esto es un ejemplo de strlen',0
    hLen rb 260
    contador dd ?
     
    .code
     
    proc lsStrlen,sStr
        ; Limpiamos los Registros.
        xor eax,eax
        xor ecx,ecx
     
       ;Guardamos la string.
       mov eax,[sStr]
       mov ecx,-1
     
       bucle:
        add ecx,1
        inc eax
        cmp byte[eax],0
        je Listo
        jmp bucle
      Listo:
       push ecx
       ret
    endp
     
    start:
      stdcall lsStrlen,poison
      mov [contador],ecx
      invoke wsprintfA,hLen,"%d",[contador]
      invoke MessageBox,0,hLen,0,0
      invoke ExitProcess,0
    .end start
...
Blog técnico dedicado a la seguridad informática y al estudio de nuevas vulnerabilidades.
Blog: http://www.seginformatica.net
Twitter: https://twitter.com/#!/p0is0nseginf
Buena funcion yo no usaba el byte en la mía usaba lodsb para cortar la cadena en caracteres y de ahí el bucle hasta que fuese 0 me gusta mas la tuya
//mHmm..
Responder

Volver a “Fuentes”