Professional Documents
Culture Documents
2007
-* *Programa
Download
Descripcin
Herramientas
Dificultad
Compresor/Compilador
Proteccin
Objetivos
Cracker?
Tutorial n
Se ve, que consta de dos botones, dos cajas de texto,etiquetas con varios
textos.... en fin: un formulario simple y llano.
Sabemos ya lo que tendramos que buscar en un codigo muerto
decompilado. Las cadenas de texto de las etiquetas, las cajas de texto,etc.
Todo cuenta, y a ms informacin, ms certera es nuestra busqueda.
Yo me serv para dar un vistazo general, la la herramienta VB Decompiler
obteniendo este resultado. El decompilado tarda un poco en realizarse:
En esta vista general del decompilado vemos dos ventanas por las que vamos
viendo tanto el nombre de los diferentes formularios (izquierda) como su
codigo asociado (derecha). Nos servimos de las barras de desplazamiento
para ello.
De entre los formularios, hay uno que a simple vista nos hace pensar que es
el formulario de registro. Vimos antes que llegabamos al formulario de
registro, clickeando en "Ayuda" y luego en "Acerca de DocCF". Pues de
entre todos los formularios, hay uno llamado "frmAbout". Palabra que nos
resultar ms que familiar (About=Acerca de...). Haciendo doble click en el
frmAbout, automaticamente en la ventana de la derecha aparece todo el
codigo asociado a l y a los componentes que lo integran. Vemos por ejemplo:
Creo que es suficiente. Podra haber puesto mas capturas pero desde ya se
puede decir que se trata del formulario de registro.
Toda esta informacion pertenece al aspecto visual del form de registro. Si
nos desplazamos en la ventana de la izquierda ms abajo, tendremos
disponibles los codigos de los formularios y sus componentes.
Un detalle por si alguien se despist un poco, en las capturas se observa que
de los dos botones disponibles, por sus nombres nos hacemos la idea de la
funcin de cada uno.
En este caso, "NncmdOk" hace referencia al boton que aparece en el
formulario con la etiqueta "Registrar".
En la siguiente captura vemos ese boton y su cdigo:
El punto en verde indica que qued puesto el BP as que.....F5 para ver que
pasa.....
Donde WKT dice INVALID, tendra que aparecer la linea 557BB3 pero.....no
est.
Y cmo hago yo para "injertar" una linea en WKT? Pues realmente no se.
Aqu reconocer que me venci sto, y ni pude injertar nada y no logr
saber cmo hace el programa para corromper l mismo una instruccin.
Si alguien se decide a investigar, recibir con mucho agrado sus
descubrimientos.
Desde luego que sto no puede ni debe quedar as. No hay rendicin que
valga.
Y pens que si no puedo inventar algo de la nada.....por qu no cambio lo que
ya existe?
Lo que se me ocurri fu estando an el WKT parado en la linea 557BB0
hecer que de algn modo llegue a la linea 557BB8. Y cmo?...Pues
sencillamente saltando. Pero casi saltando a ciegas porque veo lo que hay en
la otra orilla, pero no s si son arenas movedizas y un posible desajuste de
la pila me rompa de nuevo todo el traceo. As que....sin miedo. Se cambia lo
que sea y lo que haga falta.
Estando en la linea, la edito y el opcode original (04) lo voy a cambiar por el
opcode del salto (branch) (1E) y el resto de los bytes los quito.
En esta primera imagen se v la linea con sus bytes originales:
Lo que nos dice el error es que algo realmente malo ocurri. La linea 557BB8
no puede ser encontrada y quizas algn opcode tiene un tamao incorrecto.
Eso es lo que vena explicando hasta ahora.
Tenemos que reajustar el tamao de algn opcode para dar con la linea
557BB8 del demonio!!
Est claro que la linea 557BB0 no podemos tocarla por que es el salto a
nuestra salvacin as que se me ocurre buscar se opcode con se tamao
necesario, en la linea 557BB3.
Buscando en la lista de opcodes, encuentro uno que viene genial para este
caso:
Se pide el valor numerico de una cadena (14) que era el resultado anterior
12+2. Luego se carga un 3 y luego un uno. Al 14 se le suma ese uno con lo que
queda 15 que servir para pedir de nuestro serial trucho los tres(3)
caracteres a partir de la posicion 15 obteniendo la cadena 543
mos lo siguiente.
Desde la posicion 14 se peda 1 carcter y nos devolvi un 6. se 6 se utiliza
ba para pedir 6 caracteres desde la posicion 18. Nos devolva 210. Con los
operandos que tenamos qu necesitamos para obtener 7995? Pues para
empezar, desde la posicion 18 DEBEN haber cuatro caracteres para que el
resultado sea el apropiado. El programa tom desde la posicion 14, un
carcter y tom un 6. Pero si en vez de tomar un 6 tomase un
4(imprescindible),tomar 4 caracteres desde la posicion 18. Sera:
7995+(9X4)=8031. Aqu est: Desde la posicion 18 se tomar 4 caracteres y
se operar con l:8031-(9X4)=7995.
Suponiendo que vayamos sustituyendo el serial trucho tendramos:
123456789098745518031
Ahora necesitamos el resultado 522 y para que sea posible necesitamos:
Volvemos a manejar aqu el 4 imprescindible.
El programa tomaba el 14 , cargaba un 4 y los sumaba (18) y ahora es donde
entra en juego el 4 imprescindible. 18+4=22 y acto seguido se pedir desde
la posicion 22,4 caracteres. Qu caracteres deberan ser? Pues cuatro
caracteres que al restarlos con 4005 y luego el total se divida entre tres
nos d 522, no puede ser otro que el 2439. (4005-2439)/3=522.
El serial trucho se vuelve a modificar de la siguiente manera para que todas
las operaciones se realizen al 100%
1234567890987455180312439
En rojo, los caracteres necesarios para que todo ste puto invento funcione
y su largo completo: 25 caracteres numeros.
Abramos el DocCF original, y en el formulario de registro escribamos la
cifra anterior. Clickamos en registrar y
DocCF cuando arranca, viene aqu y verifica que el numero de activacion sea
el correcto, y arranca registrado. Con tal que cambien el ltimo numero,
Sequeyo