Ok,gracias a todos, ahora lo veo... es que tenia configurado el Olly para que lo mostrara asi. Ahora ya me aparece como DWORD PTR SS:[EBP-148] ademas la String1 me aparecia en la stack.
Que significa OFFSET LOCAL.73 que supongo es la direccion de la string a comparar o mejor dicho como traduzco la expresion para encontrar la direccion de memoria donde se aloja la Sting1
Pues repasando las API del programa vi la ComparestringA y ComparestringW por lo que tenian que comparar algo, le puse un BP on every reference a la ComparestringW y vi que cuando paraba en la zona de codiago aparecia el serial correcto y apartir de ahi fui traceando con F8 para no entrar en las calls hasta que me tope con la comparacion y el jump, modifique el jump para ver si era el correcto y funciono. No siempre es asi de facil pero bueno en este caso ha funcionado, es cuetion de tener paciencia y ir mirando las API por si alguna puede llevarte al sitio correcto.
Si pones un BP en 46DC2A PUSH EAX ingresa en la pila el serial correcto. En 46DC97 JA es el salto de la comparacion anterior CMP EDX,2 que compara el valor de EDX que en mi caso es es 2 por lo tanto no salta porque 2 no es superior a 2. Si cambias este JA por un JNA saltara y estaras registrado.
Pues no deberia ser pues segun el help de Olly pone:
Citar
[STRING 123456]=="Brown fox" - true if memory starting from address 0x00123456 contains ASCII string "Brown fox", "BROWN FOX JUMPS", "brown fox???" or similar. The comparison is case-insensitive and limited in length to the length of text constant.
O sea que podemos entrar texto o numeros y que los interprete como estrings.
Usando Ollydbg 2 En el dumpeado de la memoria tengo por ejemplo la direccion 1DEF3D guarda el dato ingresado del serial falso. Si le pongo un Memory BP y quiero que pare al ingresar por ejemplo 5678 como debo condicionarlo para que salte cuando se le entra este valor. He probado de hacerlo con el Memory log y en condicion he probado:
[STRING 1DEF3D]=="5678" y pause program y log value en always y no me funciona.
Tambien he probado en condition: [1DEF3D]=="5678" [1DEF3D]==5678 "5678" 5678
¿Cual seria la condicion correcta para que parara o logueara?
Hola pags2: Yo tambien soy nuevo en esto. Lo que yo he hecho ha sido mirar en la memoria cuando cargaba la string de serial falso "Sorry, you entered........" Porque he hecho esto, pues porque poniendole un BP en la API MessageBoxA no me paraba en ningun lugar del codigo. Cargas el programa en Olly Lo ejecutas con F9 Entras el serial falso Dejas que aparezca la pantalla de " Sorry.........." Sin cerrar la pantalla aprietas ALT+M y te aparecera la ventana de memoria. En esta ventana haces Search for y en el cuadro de dialogo le pones Sorry sin nada mas y le das al search. Veras que para y encontraras toda la frase completa y si te fijas un poco mas arriva veras toda una serie de bloques de numeros y todos si los vas provando son serials validos.
Esta es una tecnica que aprendi en este foro. No es ni muchomenos la unica manera de resolver este crackme, solo es una manera rapida de hacerlo que funciona solo en algunos casos.
Si hay algun error en este metodo ya me perdonaran y corregiran la gente que tiene mucha mas experiencia que yo.