Karpoff Spanish Tutor

Programa: mIRC 32 V5.6 Win9x


 

PROTECCION: Name / Serial
Descripcion: Programa de comunicacon en canales de Internet
Dificultad: Facilon
DOWNLOAD: http://www.irc-scripts.com/files/mirc56t.exe
Herramientas: W32Dasm , Editor Hexadecimal
CRACKER: karpoff   FECHA: 28/08/99

 

 INTRODUCCION

## Tutoríal de Crackeo Para Newbies desde Cero 28/08/99

Por Karpoff ## PROYECTO 7 ##

 

mIRC 32 V5.6 Win9x

Bueno Holaaa otra vez ¡¡!¡ , Que tal os va ¿? Hoy os presento el proyecto 7 de esta serie de manuales para Newbies desde cero, y parece que muchos de vosotros os resistís a pasar al SoftIce, ( Antxon, Tauro, Lisa2, y algunos mas ) he recibido vuestros Email con sugerencias y preguntas, prometo responderos a todas/os, aunque quizás tarde un poco, como siempre os digo que le metáis caña al SoftIce. el programa que tenemos hoy es el conocido mIRC en su ultima versión V5.6, supongo que tenéis preferencia por la versión en castellano no ¿? Pero lo haré con la de ingles así lo haréis un poco mas interesante, ya que los pasos son los mismos pero obviamente cambian las direcciones de memoria y quizás alguna otra cosa.

Podéis bajaros el programa de:

http://www.irc-scripts.com/files/mirc56t.exe

y el ejecutable en castellano lo tenéis en http://shareware.intercom.es

en la sección Internet- comunicaciones y chat.

 

 AL ATAKE

 

El programa nos da una evaluación de 30 idas, al iniciarlo nos muestra un Nagscreen con la foto del nota diciéndonos que hagamos el reg. Pasada la evaluación nos invaden molestas pantallas mientras lo intentamos utilizar.

Ataques ya que utilizaremos el W32dasm, localizar la rutina que comprueba si el registro que metemos es correcto o no, y manipularla en nuestro beneficio o eliminarla.

Herramientas, W32Dasm y un editor Hex.

Lo primero hacer una copia del ejecutable mirc32.exe, editar esta con el HexEdit y desensamblar el original.

Ejecutamos el mIRC para intentar registrarlo y ver como actua, una vez metido el reg que queramos, nos dice que no hay bisnis no cuela ("Sorry, your registration name and number don't match! ) así que a partir de este mensaje invertiremos la ejecución del programa para ver donde tomo la decisión de mostrar este aviso y no otro, vamos al W32Dasm y pulsamos el botón [ str-ref ] y nos mostrara todas las cadenas de texto que el Dasm interprete como tal.

Busquemos la frasecita "Sorry, your registration name and number don't match! en la ventana que se ha abierto, y enseguida la vemos, y justo encima vemos el texto que hace referencia a que nos hemos registrado correctamente (Your registration has been entered successfully ), bien bien bien... vamos por muy buen camino, pensemos como podemos atacar, parece que este programa es el típico que el programador no se ha tomado ninguna molestia en protegerlo, yo pienso si tengo el mensaje de registro fallido y también tengo el de registro aceptado, lo primero que me viene a la cabeza es un salto del tipo je o jne que según el valor que reciba de una comprobación salta a un mensaje o no salta y se sigue ejecutando,( aunque no todo suele ser tan sencillo ) bueno ya bale de pensar y al grano, doble clip en Sorry, your registration name and number don't match y cliqueamos nuevamente por si hubiese mas de una referencia a esta cadena, en este caso solo hay una que es en:

* Possible Reference to String Resource ID=01913:"Sorry, your registration name and number don't match! Pleas"

:004395C0 6879070000 push 00000779 ----- Aquí aparecemos

:004395C5 E8DE13FDFF call 0040A9A8

:004395CA 50 push eax

:004395CB 8B4508 mov eax, dword ptr [ebp+08]

:004395CE 50 push eax

hemos dicho que podía haber un salto con unas características determinadas no ¿? Pues a buscarlo, miraremos hacia arriba, porque lo normal es que primero se ejecuta el salto y luego se imprime el aviso, ósea que la dirección de memoria donde se encuentre el salto será anterior a el aviso de error ( aunque no siempre es así )

Y enseguida nos encontramos con el primer salto.

* Reference To: USER32.MessageBoxA, Ord:0000h

:0043956B E852C40900 Call 004D59C2

:00439570 B801000000 mov eax, 00000001

:00439575 E9C0000000 jmp 0043963A

Pero observarlo bien primero, es un salto incondicional que saltara lleve el valor que lleve, y si os fijáis en la dirección a la que va ha saltar 0043963A ya veis no ¿? Jamas nos llegaría a nuestro mensaje de error, aclaro que este jmp podría saltar a una parte del código que mediante llamadas (call) enrevesadas podría retornar por encima del mensaje de error y acabar llegando a el, pero yo opto por seguir buscado el salto con las características que nos interesan, de no encontrarlo volveríamos a este y lo seguiríamos, queda claro lo que intento explicar ¿? Sigamos hacia arriba, mirar por de pronto encontramos el aviso Your registration has been entered successfully,

* Possible Reference to String Resource ID=01911: "Your registration has been entered successfully.Thanks for"

:0043955C 6877070000 push 00000777

:00439561 E84214FDFF call 0040A9A8

:00439566 50 push eax

:00439567 8B4D08 mov ecx, dword ptr [ebp+08]

:0043956A 51 push ecx

que.. esto debería alegrarnos, ya que parece que va ha ser el típico salto que hemos explicado, ousease si el reg es correcto no salta y se encuentra con el mensaje way, que el reg no es correcto salta pasando el mensaje way, y se para antes de llegar al mensaje maldito, lo cogéis si verdad ¿? J pues sigamos buscando..... huyyuyui que no aparece L ....... Hombreeee aquí aparece uno veamos sus características.

* Reference To: USER32.SendDlgItemMessageA, Ord:0000h

:004394C3 E848C50900 Call 004D5A10

:004394C8 68CB544E00 push 004E54CB

:004394CD 68E4504E00 push 004E50E4

:004394D2 E8DD370600 call 0049CCB4

:004394D7 85C0 test eax, eax

:004394D9 0F849B000000 je 0043957A à nuestro salto

y tenemos en 004394d2 un call que le pasa un valor 0 o 1 a Test y este según el valor que le asignen ara que je salte a 0043957A o continúe ejecutándose, veis la dirección a la que apunta el salto, si decide no saltar llegara a el mensaje way, pero si decide saltar pasara por encima del mensaje way pero no del mensaje maldito, ósea que nos interesa que no se ejecute el salto, bueno pues podemos inutilizarlo (90 = nop ) o convertirlo en un salto incondicional ( eb = jmp o E? = jmp )que salte justo a la línea siguiente, lo que queráis yo recomiendo la primera eliminarlo, ósea que vamos al Editor Hex que lo teníamos abierto y con una copia del ejecutable editada, y metemos la dirección del offset que tiene el salto, (sabéis como encontrarla no¿? sino lo los sabéis mirar manuales 1 y 2 ) ousease Goto 38ad9 y si hemos decidido anular el salto, cambiamos

0F84 B000 0000 POR 9090 9090 9090 9090

Salvamos los cambios y a probar, nuevamente intentamos registrar el programa y esta vez si nos acepta el registro, miramos en el about y va apareciendo nuestro nombre, pues ya esta.

OHHH nOOOOOOOO ¡!!!! Cerrar el mIRC y volver a ejecutarlo, el registro no se mantiene, hemos pasado algo por alto, a de haber otra comprobación ( esto suele ser muy típico con el método que estamos utilizando ) bueno volvamos al salto manipulado y estudiemos que pasa, lo primero que hemos visto es que una llamada (call) venia con un valor de 0 o 1 para eax y esto determinaba si se ejecutaba el salto o no, bueno pues sigamos la llamada call 0049ccb4 y veamos que hace, nos posamos sobre ella y pulsamos el botón [call] que nos lleva a:

:0049CCB4 55 push ebp à aterrizamos aqui

:0049CCB5 8BEC mov ebp, esp

:0049CCB7 53 push ebx

:0049CCB8 56 push esi

:0049CCB9 57 push edi

:0049CCBA 8B750C mov esi, dword ptr [ebp+0C]

:0049CCBD 8B5D08 mov ebx, dword ptr [ebp+08]

:0049CCC0 53 push ebx

:0049CCC1 E8A6C00200 call 004C8D6C

:0049CCC6 59 pop ecx

:0049CCC7 83F805 cmp eax, 00000005

:0049CCCA 7304 jnb 0049CCD0

:0049CCCC 33C0 xor eax, eax

:0049CCCE EB5C jmp 0049CD2C

* Referenced by a (U)nconditional or (C)onditional Jump at Address:

|:0049CCCA(C)

:0049CCD0 56 push esi

:0049CCD1 53 push ebx

:0049CCD2 E8FDFEFFFF call 0049CBD4

:0049CCD7 85C0 test eax, eax

:0049CCD9 7407 je 0049CCE2

:0049CCDB B801000000 mov eax, 00000001

:0049CCE0 EB4A jmp 0049CD2C

Bueno vemos  algunos Push que colocan un determinado valor en la pila una comparación (cmp) eax = 5 que hará que si jnb no salta iremos al final de la llamada que estamos examinando que es call 0049ccb4, que en estos momentos estamos dentro de ella y que si vamos al final de la llamada no hacemos nada porque no ha efectuado ninguna comprobacion del tipo que necesitamos, fijaros que en 0049CCD2 empieza un call este trae un valor 0 o 1 , este 0 o 1 depende de si el reg que metemos es valido o no y pone a eax a 0 o 1, según el valor saltara o no, como podéis ver es el mismo proceso que seguía nuestra primera comprobación, así que probemos a anular el salto,( os recomiendo que sigáis todo el proceso con el softice, de esa manera sabréis que hace el salto de 0049CCD9 7407 je 0049CCE2

Lo que intento decir es que con el listado muerto no hay manera de saber si lo bueno es que se ejecute el salto o viceversa , con el soft no tendríamos que probar al azar.)

Bueno pues vamos al editor HEX y llamamos al offset del salto que tenemos que anular GOTO 9C2D9 Y CAMBIAMOS.

7407 POR 9090 y con esto hemos anulado el salto, ahora probamos otra vez a registrar el mIRC, metemos los datos, y como era lógico nos los acepta, nos queda comprobar si se mantiene el registro, ósea que cerramos abrimos nuevamente vamos a

help y de entrada ya tenemos una buena señal no esta la opción para registrarnos, y mirando en about hay están nuestros datos, (objetivo conseguido)

NOTA este crack no es como el de los primeros manuales, que los datos del reg se guardaban en el registro de Windows, y esto nos permitía utilizar el ejecutable original en vez del ejecutable patcheado, en este caso si queréis utilizar mIRC debéis utilizar el ejecutable crackeado, por eso os recomiendo que generéis el crack oK,

Como siempre espero que todo este claro y que disfrutéis con estos manuales, que al fin y al cabo de eso se trata, En próximos manuales os enseñare como hacer nosotros los cracks, con turbo pascal, si no disponéis de un compilador de pascal en mi web tenéis algunos, incluso los originales de borland en su versión 7 y también la 5.5.

Otro consejo coger cualquier programa y analizarlo con el softice, una y otra vez asta que os lo sepáis casi de memoria, no os podéis hacer ni idea de lo que vais a aprender, analizar programas también con el Regmon y el Filemon o el del ultimo manual WinX-espose register. Etc

Cualquier Duda, Sugerencia, Critica etc. A

Email Kf_karpoff@hotmail.com     URL: http://welcome.to/karpoff

Un Saludo a TODOS/AS. (Karpoff)

Este material es solo para uso educativo, por ahora los cracks son ilegales.

 

Karpoff Spanish Tutor: Pagina dedicada a la dibulgacion de informacion en Castellano, sobre Ingenieria Inversa y Programacion. Email "Colabora con tus Proyectos"
www.000webhost.com