• [FASM]lStrlen [c0d3d p0is0n]

 #309483  por p0is0n-123
 28 Jun 2011, 23:45
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: [ Debe registrarse para ver este enlace ]
    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
...
 #310112  por linkgl
 30 Jun 2011, 17:29
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