hola gente, como estan ?
miren hace poco empeze a ver este tema del craking, y esta muy bueno... lei todos los tutoriales de la pagina, han salido todo re bien !
mi pregunta es:
intente ver si puedo crackear un software, el "1st smtp Server". lo cual lo hice a medias. esta echo en Delphi, no tiene protección.
[Edit] Pongo la url, por si quieren ver el programa. http://www.emailarms.com/products/1st_smtp.html (http://www.emailarms.com/products/1st_smtp.html) [/Edit]
tiene una ventana de registro que aparece cada vez que arranco el programa y cada determinado tiempo se vuelve a abrir. lo que hice fue poder poner cualquier numero de registro y me lo tome como valido el tema es que cuando lo cierro y lo abro aparece y sigue apareciendo al transcurrir un determinado tiempo en ejecución.
que cosas tendria que ver, para poder crackearlo bien :D o conseguir un serial valido (que no lo pude encontrar :S )
salu2
El código es muy simple... tenes que simplemente buscar tu famoso mensaje ("invalid code"), subís un poco (la pantalla) y ves que hay un salto que desemboca ahí... te vas al salto, y ves que se compara un registro si es distinto de 0 (test bl,bl) pero antes se guarda en bl: eax (acumulador) y antes una llamada a una función... por lógica eax contendrá el valor de retorno de esa función, entonces es esa llamada la que hace el checkeo del serial, analizas el código de la función y hay varias comprobaciones... el tema es que si pones puntos de comprobación van a saltar a cada rato, porque le programa tiene un timer y cada cierta cantidad de tiempo vuelve a comparar la clave...
entonces seteás un breakpoint en la llamada a la función y cuando se detiene entras a debugearla y encontráis lo siguiente:
:004EC910 53 push ebx
...
:004EC91E E82980F1FF call 0040494C <- longitud de clave
:004EC923 83F80E cmp eax, 0000000E <-tiene que ser igual a 14
...
:004EC92A 803830 cmp byte ptr [eax], 30 <- primer dígito = 0
...
:004EC937 80780231 cmp byte ptr [eax+02], 31 <- 3º = 1
...
:004EC945 80780332 cmp byte ptr [eax+03], 32 <- 4º = 2
..
:004EC953 80780433 cmp byte ptr [eax+04], 33 <- 5º = 3
...
:004EC961 80780734 cmp byte ptr [eax+07], 34 <- 8º = 4
...
:004EC96F 80780839 cmp byte ptr [eax+08], 39 <- 9º = 9
:004EC97D 80780A35 cmp byte ptr [eax+0A], 35 <- 11º = 5
...
:004EC989 83FE07 cmp esi, 00000007 <- coinciden todos??
:004EC98C 0F94C3 sete bl <- serial válido
...
:004EC994 C3 ret
un ejemplo de serial válido sería: 0X123XX49X5XXX
S2
muchas gracias por responder !
(estoy revisando el code)
Pregunta, que hace la función (test bl,bl).
el algoritmo que compara si el serial es valido, seria
cmp byte ptr [eax+02], 31
y si es asi, esa operación, como se explica el funcionamiento... :S ( estoy entendiendo de a poco, en la facu recien empezamos con assembler y me la vuela bastante... :D)
graicas !!!
Cita de: xAnubiSx en 30 Octubre 2007, 18:57 PM
Pregunta, que hace la función (test bl,bl).
test x,y equivale a if(x&y), en el caso test bl,bl , se compara que bl sea distinto de 0 y se guarda el resultado en las banderas del procesador...
Cita de: xAnubiSx en 30 Octubre 2007, 18:57 PM
el algoritmo que compara si el serial es valido, seria
cmp byte ptr [eax+02], 31
en realidad son todos los
cmp byte ptr [eax+X], Yy el
cmp esi, 00000007Cita de: xAnubiSx en 30 Octubre 2007, 18:57 PM
y si es asi, esa operación, como se explica el funcionamiento... :S ( estoy entendiendo de a poco, en la facu recien empezamos con assembler y me la vuela bastante... :D)
el serial que coloques se almacena en el registro del acumulador (eax) y mediante los índices se puede ir recorriendo cada caracter:
key: hola
byte [eax]='h'
byte [eax+1]='o'
byte [eax+2]='l'
byte [eax+3]='a'
con:
cmp byte ptr [eax+X], Y
se compara cada uno de los caracteres con Y1,Y2,...,Yn
si son iguales se incremente el registro esi... y si:
cmp esi, 00000007 <- los siete carateres coinciden(fíjate que hay 7 comparaciones en el código)
sete bl <- serial válido
S2
La Verdad que mil gracias!!!
me esta gustando mas esto que programar en visual, o pascal (lo que me dan en la facu :D )
salu2
Offtopic: Buena tu pagina ! ya me registre :D
[Edit] de Casualidad como veo donde guarda la informacion de registro, porque quiero investigarlo un poco mas al programa, y desinstale. borre todo limpie el registro, pero sigue registrado :S [/edit]
Cita de: xAnubiSx en 30 Octubre 2007, 20:10 PM
[Edit] de Casualidad como veo donde guarda la informacion de registro, porque quiero investigarlo un poco mas al programa, y desinstale. borre todo limpie el registro, pero sigue registrado :S [/edit]
La verdad que ni idea... ya desinstale tb el programa, pero tendría que aparecer en las cadenas de texto que el programa utiliza... fijate ahí...
S2