Página 1 de 1

Comparar cadenas FASM by Linkgl

Publicado: 29 Nov 2010, 19:42
por linkgl
Aca una forma que hize de comparar cadenas se me ocurrió crackeando un crackme jeje está algo larga pero podría ser alternativa a el anterior repe cmps que había posteado

Código: Seleccionar todo

include 'win32ax.inc'
;***********************
; Programador: Linkgl  *
; indetectables.net    *
; corp-51.net          *
; 29/11/10             *
; Comparar cadenas     *
;***********************
.data
  cadena1 db 'linkgl',0  ;cadenas a comparar
  cadena2 db 'linkgl',0

.code
  inicio:
  MOV EAX,0 ;acomodamos nuestros registros a 0
  MOV EDX,0
  MOV ECX,0
  MOV ESI,0

  LEA ESI,[cadena1] ;obtenemos la cadena 1
  bucle:
  LODSB  ;la cortamos y la almacenamos toda en EDX
  CMP AL,0
  JE continuar
  ADD EDX,EAX
  INC ECX
  JMP bucle

  continuar:
  PUSH EDX    ;metemos edx a la pila
  MOV EDX,0
  MOV ESI,0
  LEA ESI,[cadena2]

  bucle2:   ;hacemos lo mismo con la otra cadena
  LODSB
  CMP AL,0
  JE comparar
  ADD EDX,EAX
  INC ECX
  JMP bucle2

  comparar:
  POP EBX     ;sacamos el valor de EDX de la pila a EBX
  cmp EDX,EBX   ;Comparamos
  je iguales  ;si son iguales  pues saltamos a iguales
  invoke MessageBoxA,0,"No son iguales","by linkgl",0
  invoke ExitProcess,0

  iguales:
  invoke MessageBoxA,0,"Son iguales","by linkgl",0
  invoke ExitProcess,0


  .end inicio