Suponiendo q ese JNZ es un JE queda
http://www.freeuploader.com/view.php/152334.rary en este caso esta mas dificilito pues no se puede invertir el algoritmo y hay que usar la fuerza bruta, yo me hize un programilla
#include <stdio.h>
main()
{
char nombre[6];
char pass[10];
char suma[10];
char bb[10];
int j;
char k;
printf ("el nombre debe tener 6 letras de 'a' a 'z' y 'A' a 'Z', no todos los nombres tienen un serial correspondiente, prueba alternando mayusculas y minusculas\n");
START:
printf ("nombre: ");
scanf ("%s",nombre);
sprintf(pass,"0000");
sprintf(suma,"\00\00\00\00\00\00\00\00\00\00");
chekeo:
for (j=0;j<4;j++)
{
suma[j]=nombre[j]+pass[j];
}
_asm
{
PUSHAD
XOR EBX,EBX
XOR EAX,EAX
XOR EDX,EDX
NEXT:
MOV CL,BYTE PTR DS:[EAX+suma]
INC EAX
MOV EDI,DWORD PTR DS:[EAX+suma]
XOR ECX,EDI
MOV DL,CL
MOV DWORD PTR DS:[EBX+bb],EDX
INC EBX
INC EAX
CMP EAX,04h
JE ALL
JMP NEXT
ALL:
MOV AL,BYTE PTR DS:[bb]
IMUL EAX,EDX
CMP EAX,06EBh
JNE SIGUE
POPAD
JMP FIN
}
SIGUE:
_asm POPAD
if (pass[0]=='9') {
if (pass[1]=='9') {
if (pass[2]=='9') {
if (pass[3]=='9') {
printf("no se encontro ningun pass valido para ese nombre, eliga otro\n");
goto START;
}
pass[3]++;
pass[2]='0';
pass[1]='0';
pass[0]='0';
goto chekeo;
}
pass[2]++;
pass[1]='0';
pass[0]='0';
goto chekeo;
}
pass[1]++;
pass[0]='0';
goto chekeo;
}
pass[0]++;
goto chekeo;
FIN:
pass[4]=0;
printf("pass: %s\n\nby x4uth 2006\n\n\n\nPress Ctrl+C to Exit",pass);
scanf ("%s",nombre); //para que no se nos cierre
return(0);
}
http://www.freeuploader.com/view.php/152337.rary en este caso mi user y pass son XAUTHS/7195