Para registrar el programa, hay que ir al menu "Help
/ Register", donde se pediran tres campos:
User Name: Mr.Grey
Organization: Mr.Grey
Registration: 30061996
El valor introducido, puede ser cualquiera.
Pulsar Ctrl+D para entrar en el SoftIce y poner un
BreakPoint:
bpx GetDlgItemTextA
Pulsar F5 para volver al programa y pulsar el boton
OK.
Saltaremos al SoftIce y pulsaremos F5, esto hara
que vuelva al programa despues de haber capturado el primer
campo, el User Name.
Volveremos a aparecer en el SoftIce, pulsaremos F5,
esto hara que vuelva al programa despues de haber capturado
el segundo campo, la Organization.
Volveremos a aparecer en el SoftIce., en la captura del
tercer campo, el Registration.
Esta vez, pulsaremos F11, esto hara que nos situemos
justo despues de la ultima llamada a GetDlgItemTextA,
en la direccion :0040BF03.
Iremos pulsando F10 hasta llegar al codigo siguiente:
..... |
|
|
|
|
:0040BF46 |
53 |
PUSH |
EBX |
<-- Organization |
:0040BF47 |
56 |
PUSH |
ESI |
<-- User Name |
:0040BF48 |
E8936C0000 |
CALL |
00412BE0 |
<-- Calculo del numero real |
:0040BF4D |
83C408 |
ADD |
ESP, 08 |
|
:0040BF50 |
3BC5 |
CMP |
EAX, EBP |
<-- Aqui |
...... |
|
|
|
|
Antes de llegar a :0040BF46, hace una serie de comprobaciones,
entre ellas, la de mirar la longitud de los valores introducidos.
Una vez situados en la linea :0040BF50, lo que hace
el programa es comparar nuestro Registration con el que
calcula el.
Solo queda ver cual es el codigo que a calculado.
Podemos evaluar el valor, de EBP y EAX, escribiendo:
? EBP <-- Nuestro Registration = 30061996
? EAX <-- Real Registration = 3723587923
Ahora ya podemos desactivar el BreakPoint que teniamos,
escribiendo:
bd 00
y pulsar F5 para volver al programa.
Una vez en el programa, escribir el numero real y ya esta
registrado.
|