Comunidad MUNDOTE



Autor Tema: Taller Cracking  (Leído 2033 veces)

dark666

  • Visitante
Taller Cracking
« : 04 de noviembre de 2006, 12:44:49 am »
Whew!!  :o Asi como lo ven vamos a darle con el curso de cracking, para esto unas aclaraciones  :P

* En este tema domina la paciencia muchas veces son necesarios muchos saltos... luego veran  ;).... para llegar al objetivo
* No soy un crack soy tmb un novato, solo que les llevo unos 5 o 6 tutos de ventaja xD
* Algunos ejemplos los hare yo, otros los bajere de internet y ahi vere que onda
* Las clases de este taller seran vienes y lunes, dado qeu el fin todos tenemos mas tiempo y lunes para que sea la semana entera para hacer la practica
* Se dejaran ejercicios haganlos y no publiquen el metodo para hacerlo hasta la fecha limite, salvo excepciones sera para la sig clase

Muy bien, por ahora veremos algo de teoria y algo practico, asi sera el esquema siempre  ;)

Ahora para empezar diremos que el cracking, seria el proceso inverso a programar a partir del exe deseamos llegar al codigo fuente con algun fin, el problema es que el codigo fuente sera en ensamblador para lo cual es necesario saber ciertas cuestiones.

Registros
Código: [Seleccionar]
AX Acumulador
BX Base
CX Contador
DX Datos
DS Segmento de datos
ES Segmento extra
SS Segmento de pila
CS Segmento de código
BP Apuntadores base
SI  Indice fuente
DI  Indice destino
SP Apuntador de la pila
IP Apuntador de siguiente instruccion
F  Banderas

Llamadas
Código: [Seleccionar]
Call y Ret. Call hace la llamada a un subproceso o subrutina, y se efectuan todas las operaciones con los registros de ese momento, no son nuevos. Todo se hace hasta que llega con un Ret digamos que ese es el tope para indicar el regreso xD
Comparaciones
Código: [Seleccionar]
Comp X,Y. Compara X con Y y afecta las banderas
Saltos
Código: [Seleccionar]
JMP
JA (JNBE)
JAE (JNBE)
JB (JNAE)
JBE (JNA)
JE (JZ)
JNE (JNZ)
JG (JNLE)
JGE (JNL)
JL (JNGE)
JLE (JNG)
JC
JNC
JNO
JNP (JPO)
JNS
JO
JP (JPE)
JS

******* Sintaxis **********
----Instrucción JMP
Propósito: Salto incondicional
Sintaxis: JMP destino
Hace el salto sin importar nada
 
----Instrucción JA (JNBE)
Propósito: Brinco condicional
Sintaxis: JA Etiqueta
Después de una comparación este comando salta si está arriba o salta si no está abajo o si no es igual.

Esto significa que el salto se realiza solo si la bandera CF esta desactivada o si la bandera ZF esta desactivada (que alguna de las dos sea igual a cero).

----Instrucción JAE (JNB)
Propósito: salto condicional
Sintaxis: JAE etiqueta
Salta si está arriba o si es igual o salta si no está abajo.
El salto se efectúa si CF esta desactivada.

----Instrucción JB (JNAE)
Propósito: salto condicional
Sintaxis: JB etiqueta
Salta si está abajo o salta si no está arriba o si no es igual.
Se efectúa el salto si CF esta activada.

----Instrucción JBE (JNA)
Propósito: salto condicional
Sintaxis: JBE etiqueta
Salta si está abajo o si es igual o salta si no está arriba.
El salto se efectúa si CF está activado o si ZF está activado (que cualquiera sea igual a 1).

----Instrucción JE (JZ)
Propósito: salto condicional
Sintaxis: JE etiqueta
Salta si es igual o salta si es cero.
El salto se realiza si ZF está activada.

----Instrucción JNE (JNZ)
Propósito: salto condicional
Sintaxis: JNE etiqueta
Salta si no es igual o salta si no es cero.
El salto se efectúa si ZF está desactivada.

----Instrucción JG (JNLE)
Propósito: salto condicional, se toma en cuenta el signo.
Sintaxis: JG etiqueta
Salta si es más grande o salta si no es menor o igual.
El salto ocurre si ZF = 0 u OF = SF.

----Instrucción JGE (JNL)
Propósito: salto condicional, se toma en cuenta el signo.
Sintaxis: JGE etiqueta
Salta si es más grande o igual o salta si no es menor que.
El salto se realiza si SF = OF

----Instrucción JL (JNGE)
Propósito: salto condicional, se toma en cuenta el signo.
Sintaxis: JL etiqueta
Salta si es menor que o salta si no es mayor o igual.
El salto se efectúa si SF es diferente a OF.

---Instrucción JLE (JNG)
Propósito: salto condicional, se toma en cuenta el signo.
Sintaxis: JLE etiqueta
Salta si es menor o igual o salta si no es más grande.
El salto se realiza si ZF = 1 o si SF es diferente a OF

----Instrucción JC
Propósito: salto condicional, se toman en cuenta las banderas.
Sintaxis: JC etiqueta
Salta si hay acarreo.
El salto se realiza si CF = 1

----Instrucción JNC
Propósito: salto condicional, se toma en cuenta el estado de las banderas.
Sintaxis: JNC etiqueta
Salta si no hay acarreo.
El salto se efectúa si CF = 0.

----Instrucción JNO
Propósito: salto condicional, se toma en cuenta el estado de las banderas.
Sintaxis: JNO etiqueta
Salta si no hay desbordamiento.
El salto se efectúa si OF = 0.

----Instrucción JNP (JPO)
Propósito: salto condicional, toma en cuenta el estado de las banderas.
Sintaxis:JNP etiqueta
Salta si no hay paridad o salta si la paridad es non.
El salto ocurre si PF = 0.

----Instrucción JNS
Propósito: salto condicional, toma en cuenta el estado de las banderas.
Sintaxis: JNP etiqueta
Salta si el signo esta desactivado.
El salto se efectúa si SF = 0.

----Instrucción JO
Propósito: salto condicional, toma en cuenta el estado de las banderas.
Sintaxis: JO etiqueta
Salta si hay desbordamiento (overflow).
El salto se realiza si OF = 1.

----Instrucción JP (JPE)
Propósito: salto condicional, toma en cuenta el estado de las banderas.
Sintaxis: JP etiqueta
Salta si hay paridad o salta si la paridad es par.
El salto se efectúa si PF = 1.

----Instrucción JS
Propósito: salto condicional, toma en cuenta el estado de las banderas.
Sintaxis: JS etiqueta
Salta si el signo está prendido.
El salto se efectúa si SF = 1.

Tomado del tuto del Raton  ;)

Ok, bueno despues de esos apuntes deben bajar 2 cosas el PEiD http://www.secretashell.com/codomain/peid/files/PEiD-0.94-20060510.zip y el Olly http://ollydbg.de/odbg110.zip. Mientras bajan denle un repaso a lo de arriba en principal a los saltos. No se traumen aprendiendolos de memoria pero si un repaso cae bien ;).

Ahora vamos con el primer CrackMe sera este http://www.megaupload.com/?d=BETRGX80 . Es un esplendido soft que perimite abir y cerrar el lector del cd. Creado por Dark666 y ha vendido miles de copias xD.

Weno cuando lo queremos probar para abrir el CD vemos lo siguiente:


Muy bien, como no queremos pagar, debemos brincarnos eso, con lo cual abriremos el PEiD. El PEiD es un soft que nos muestra si la aplicacion tiene algun tipo de procteccion o si fue empaquetada y nos sirve para saber con que soft fue escrito. Lo abrimos y vemos
esto


Ahora debemos ir al Olly y al cargar el programa debemos dar click derecho en cualquier parte del codigo, seleccionar Seachr For... luego All Referenced text strings.


Ahi vamos a buscar el mensaje de error que nos salio, lo encontramos y damos doble click en el


Al dar click en el, nos lleva a la parte del codigo donde se aloja esa instrucion. Muy bien ahora vamos a buscar hacia arriba un salto condicional. En el codigo veran muchas instrucciones que aun no enseño, pero no son importantes por ahora. Por lo que si vamos hasta arriba hasta la direccion 00401F24  veremos un salto.... esta direccion esta muy arriba, por eso dije paciencia a la hora de buscar xD.... JE CrackMe1.0040202B , ok si no recuerdan que hace ese salto vean arriba xD


Ahora como ese salto es condicional, vamos a cambiarlo demos doble click en el y en lugar de JE ponemos su contrario JNE, quitamos lo de fill wiht NOP's y damos click en Assamble.


Ahora damos click derecho en la parte que modificamos, buscamos Copy to executable y de ahi selection.


Nos abre otra ventana click derecho donde modificamos y escogemos Backup y de ahi save to data file. Y lo guardamos con otro nombre para conservar el original y el ya crackeado.


Cerramos todo y nos dice si modifcamos el original, le decimos que no y ejectuamos el nuevo. Y listo funciiona bien.... aviso, dan latas las apis si sale mensaje de error es culpa del codigo fuente, se mejora en la version 2.0 xD , perdon por la molestia xD .....

Muy bien, espero que haya quedado claro, pues varias imagenes para hacerlo mas facil y espero que quede claro y sino a postear y entre todos a ayudarnos  :D . Ahora la tarea  :\ es saltarse la proteccion para cerrar el CD. Saludos y suerte a todo el mundo.
« Última Modificación: 04 de noviembre de 2006, 03:29:35 pm por dark666 »

MakiaResc

  • Administrador
  • Administrador
  • Guia Profesional
  • *
  • Mensajes: 6880
  • Karma: +100/-0
  • Super MakiaResc
    • Informacion Sin Limites
Re: Taller Cracking
« Respuesta #1 : 04 de noviembre de 2006, 03:14:48 pm »
1.- http://download.softpedia.com/software/programming/PEiD-0.94-20060510.zip No se puede bajar dice que direccion incorrecta, corrigenos el link.

2.- Sigo estudiando jeje.

3.- La tarea osea lo que tenemos que lograr es lograr Cerrar la Unidad de CD osea que tiene proteccion hay que quitarsela ¿Es asi?, ¿Estoy correcto?

VAMOS MUNDOTE POR EL AÑO 2012


dark666

  • Visitante
Re: Taller Cracking
« Respuesta #2 : 04 de noviembre de 2006, 03:31:35 pm »
Whew!! Ok el link ya esta corregido  ;) y asi es su tarea consiste en lograr cerrar la unidad de cd cuando presionen ese boton, si lo presionan ahora saldra un mensaje y no pasara nada. Es facil solo siguan el ejemplo anterior.

Wolfaint

  • Visitante
Re: Taller Cracking
« Respuesta #3 : 04 de noviembre de 2006, 03:49:30 pm »
Olly,


Yo usaba el Olly debugger, hace años ya....

dark666

  • Visitante
Re: Taller Cracking
« Respuesta #4 : 06 de noviembre de 2006, 09:31:30 pm »
* Las clases de este taller seran vienes y lunes, dado que el fin todos tenemos mas tiempo y lunes para que sea la semana entera para hacer la practica
* Se dejaran ejercicios haganlos y no publiquen el metodo para hacerlo hasta la fecha limite, salvo excepciones sera para la sig clase


Whew!! que onda parceros, que bueno que exista interes, seguire con este proyecto un buen rato mas. Conforme a la tarea, pueden enseñar el metodo que hicieron a partir de hoy o simplemente poner el exe ya funcional.

Muy bien, hoy es lunes, lo cual significa otra clase  :D

Weno para comenzar me ire un poco mas rapido, espero que hayan estudiado lo anterior  ;), asi que ciertos pasos solo los mencionare pero no entrare en detalles como la ves pasada. Ok en esta clase veremos:

* ¿Que es un NAG y como eliminarlos?
* Usar breakpoint
* Usar jump's

Muy bien para comenzar, diremos que un NAG es esa ventana en los programas que se usan para recordarnos de ciertos aspectos, como que usamos una version de prueba o que el tiempo limite esta a punto de acabarze. Muy bien, no podran negar xD, que esas ventanas son muy molestas, carga Win y se nos llena de recordatorios para pagar. Ahora veremos la forma de poder eliminar esas molestas ventanas. Atencion: eliminar el NAG no significa quitar o extender el tiempo de prueba, solo es quitar los mensajes.

Muy bien para esto tienen que bajar el soft Calculadora 2006

http://rapidshare.com/files/2295308/Crackme2.zip.html
http://www.megaupload.com/?d=Q1752SVZ
http://www.uploading.com/files/J6ESAIVF/Crackme2.zip.html

Del mismo autor que el abre y cierra cd todo un exito en el mercado xD.

Ok cuando lo abrimis tenemos el primer nag      :-\


Ahora cuando presionamos el boton otros 2 nags :S



Ok, ya vimos los letreros que deseamos quitar por ahora, vamos  a PEiD y vemos que no esta empacado y esta hecho en VB

Muy bien como no esta empequetado, lo mejor es sacar una copia de seguridad y de ahi vamos al Olly y buscamos el texto, en este caso veran esto


***** NOTA: Como posee una imagen Olly puede decir que esta empaquetado, diganle que si por PEiD sabemos que no***

Ahora debemos dar doble clik donde dice "Soy un NAG" para que nos lleve a la parte del codigo. Una ves ahi veran instrucciones como LEA, MOV PUSH etc etc.... por ahora no interesan, lo que nos importa es evitar llegar a 00412E6D que es ahi donde manda el mensaje. Bueno aca no hay ningun JE ni otro salto, solo hay un CALL. Por lo que tendremos que cambiar el CALL por un JMP.

SI recuerdan los JMP son saltos obligatorios, entonces al poner JMP hara el salto sin importar nada. Debemos dar doble click para cambiar CALL EDI por  JMP 00412E73.


Cuando lo hagan quedara asi


Muy bien, ahora para saber que el cambio funciona sin que el programa deje de funkar probamos poniedo un BreakPoint para ver que todo marche de maravilla. Para eso nos situamos en 00412E4F y presionamos F2, veremos que cambia de color. Ahora presionamos 1 ves F9 y se comenzara a correr el programa, pero cuando llegue a esa instruccion se pausara. Ahora presionando F8 iremos avanzando linea por linea. Veremos que como el salto hace su funcion. Cuando veamos  eso presionamos otra ves F9. Para finalizar para quitar el salto solo presionamos F2 otra ves.


Ahora que vemos que funka hacemos lo mismo con los demas NAG's.


Muy bien cuando terminemos damos click derecho copy to executable y de ahi escogemos all modifications


De ahi nos lleva a una ventana ya conocida y guardamos el exe final y listo hemos eliminado esos Nags.

Como fue hecho en VB el codigo tiene un forma especial y al no haber otra call decidi modificar esa, pero en otro exe puenden probar modificar otra call y ver si funka.... en este mundo del crack, no hay metodo seguro, siempre se necesita ingenio.

Weno con eso terminamos, de tarea  :P sera quitar por completo los demas Nags del soft. Explican su metodo el viernes y feliz crack a todos  :D

FreeX

  • Master Mundotero
  • *
  • Mensajes: 343
  • Karma: +8/-0
  • De Viaje a Ninguna Parte
    • Me quede sin sitio web xD
Re: Taller Cracking
« Respuesta #5 : 06 de noviembre de 2006, 11:55:28 pm »
tratare de ponerme al dia con esto

se ve interesante

gracias
Core 2 Quad Q9550 2.83 Ghz @3.00Ghz + Gigabyte GA-EP45-UD3R + kingston 4 GB 5-5-5-15 + ATI Radeon 4770 + OCZ SSD 60 GB + Seagate 7200.11 1.5 TB + Corsair 650w


 

Copyright © Diseño Staff Mundote