Introducción al cracking by kiori

Tema en 'Manuales y Tutoriales' iniciado por kiori, 8 Feb 2009.

  1. kiori

    kiori Usuario Nuevo nvl. 1
    17/41

    Registrado:
    10 Sep 2007
    Mensajes:
    163
    Me Gusta recibidos:
    14
    INTRODUCCION AL CRACKING



    Introducción

    En este tutorial se tratara de dar una pequeña introducción a la ingeniería inversa o cracking desde lo más básico. Lo que necesitan es tener conocimientos básicos de asm que no me detrendre a explicar si no es necesario.
    Cracker: persona amante de las computadoras con amplios conocimientos en informática que se dedica al cracking.
    El cracking es el arte de remover o quitar protecciones a programas comerciales con fin educativo, diversión o satisfacción personal. Aunque este término se puede atribuir como un hacker malo en algunas ocasiones, también se le puede llamar ingeniería inversa como la forma es que se utiliza opuestamente los conocimientos para romper la protección.


    Quien puede ser cracker
    Cualquier persona que es perseverante y que este dispuesta a aprender constantemente puede serlo.

    Básicamente lo que necesitamos es:
    - Tener conocimientos del lenguaje ASM (Ensamblador o assembler en ingles)
    - Tener conocimientos por el sistema hexadecimal y sus conversiones al sistema decimal.
    - Tener ganas de aprender y ser perseverante en el tiempo


    Herramientas principales del cracking

    Depurador (debugger): Son programas originalmente creados para corregir errores en otros programas informáticos, pudiendo abrir cualquier ejecutable (.exe) en el leguaje ASM indistintamente de cual haya sido el lenguaje original del programa (entienden ahora la importancia del ASM, hay que aprenderlo). Con este programa podemos ejecutar cada instrucción del programa y detenernos en cualquier momento o en el momento en que el programa toma la decisión de estar registrados o no y poder cambiar el código a nuestro beneficio... mas adelante entenderán mejor a lo que me refiero cuando lo usemos.
    Uno de los depuradores mas famosos sin duda es softice también apodado la “bestia negra” por su apariencia tipo m-dos y por lo poderoso que podía ser para crackear programas.


    [​IMG][​IMG]
    [​IMG]

    Actualmente este debugger esta en desuso ya que se llego con el hasta win NT, pero igualmente con unos parches se puede instalar en XP por si alguien quiere echarle un vistazo a esta leyenda del crack de hace unos años.
    Otro debugger famoso es OllyDbg

    [​IMG][​IMG]

    Que es un muy buen debugger mucho más ameno, amigable e intuitivo que el viejo softice. Tiene multitud de plugins que ofrecen ayudas importantes, también se pueden cambiar los colores del fondo o las letras. Más adelante se explicara como configurarlo y las funciones básicas, ya que es el depurador que se usara para crackear.

    Desamblador (disassembler): Programa que te permite ver cualquier ejecutable en leguaje ASM así como referencias de texto entre otras. La principal diferencia con un debugger es que el desamblador podemos ver el código en ASM y el debugger podemos interactuar con el (ejecutar, modificar). Un desamblador bastante útil es W32dasm que también es debugger, pero se usa mas que nada solo como desamblador ya que si queremos un buen debugger esta olly que lo supera ampliamente .




    [​IMG]


    Editor hexadecimal: Programa que te permite editar cualquier archivo de forma hexadecimal. Todo el código ensamblador tiene su correspondiente en hexadecimal, los debugger y desambladores traducen estos a las instrucciones que vemos normalmente. Podemos hacer una modificación en el ejecutable de dos formas. La primera es con un editor hexadecimal y la otra es con el mismo olly... La desventaja de hacerlo con un editor es que si queremos modificar una instrucción en ensamblador tenemos que saber el correspondiente en hexadecimal y si lo hacemos con olly lo modificamos directamente por la instrucción que queremos. Algunos editores son el Ultraedit y el hex workshop.

    Monitor del registro: Programa que sirve para vigilar el registro de windows. En ocasiones los programas guardan datos en el registro, datos como seriales, nombres de usuario, fecha de instalación entre otros. Por lo tanto hay que tener en cuanta este tipo de programas que los puede servir mucho. Un ejemplo monitor de registro de Regmon.
    Monitor de archivos: Programa que sirve para vigilar posibles vínculos con archivos. Algo parecido al monitor de registro con la diferencia obvia en que este monitorea archivos ya sea del tipo dat .txt lo que sea. Este tipo de programas es menos útil que el monitor de registro ya que casi siempre los programas guardan los datos en el registro de windows.

    Descompresores: Algunos programas utilizan distintos tipos de compresiones sin que estos varíen la extensión .exe lo que hace más difícil crackear, ya que al estar comprimidos no estamos analizando un ejecutable normal, sino uno que tiene datos encriptados que no son tan accesibles ahora :S. El tema es amplio y lo explicare mas adelante. Por ahora solo tienen que saber que hay programas encriptados los cuales son mas difíciles de crackear y la opción mas viable seria descomprimirlos con algún programa descompresor o aun mas dificil manualmente.
    Lo compresores más famosos son UPX, ASprotect, ASPack, armadillo, PECompressor, etc.
    Los descompresores tienen multitud de nombres casi todos incluyen el mismo nombre del compresor Ej. Aspackdie.





    Definiciones a saber

    Informática: Ciencia que se encarga de la automatización del manejo de la información. Ciencia de la información automatizada, todo aquello que tiene relación con el procesamiento de datos, utilizando los ordenadores y/o los equipos de procesos automáticos de información.
    Conjunto de conocimientos referidos a los ordenadores.

    Proviene del francés informatique y fue acuñado por el ingeniero Philippe Dreyfus en 1962. Formó una conjunción entre las palabras "information" y "automatique".

    La informática se basa en múltiples ciencias como la matemática, la física, la electrónica, etc.


    Zen Cracking: se refiera a la forma de pensar de cracker de cómo funciona el programa. No hay una clave exacta para crackear programas, el cracking no es sistemático y muchas veces la forma en que crackiamos un programa, en que intuimos la solución es el zen cracking que se desarrolla con la experiencia. Mientras más desarrollado tengamos el Zen cracking más rápido crackearemos un programa.


    pd : Esta es una introduccion general de craking o ingenieria inversa. Despues dare link de las herramientas a utilizar y algunos conceptos basicos sobre tecnicas de craking.. Explicare las funciones basicas basicas de asm para que podemas empezar a cracker algunos crackmes.



    Assembler y técnicas básicas de craking (leccion 2)



    Pueden leer un manual de asm que personalmente me gusta bastante que es El curso de Assembler de CaoS ReptantE. Lo recomendado es leer por ahora y no complicarles la existencia con cosas que no se verán es que revisen con más detalle lo siguiente:

    http://rapidshare.com/files/29170001/Assembler.doc.html

    [FONT=&quot]1. [/FONT][FONT=&quot]SISTEMAS DE NUMERACIÓN[/FONT]
    [FONT=&quot]1.1.[/FONT][FONT=&quot]Decimal[/FONT]
    [FONT=&quot]1.2.[/FONT][FONT=&quot]Binario[/FONT]
    [FONT=&quot]1.3.[/FONT][FONT=&quot]Hexadecimal[/FONT]
    [FONT=&quot]1.4.[/FONT][FONT=&quot]Conversión[/FONT]
    [FONT=&quot]2. [/FONT][FONT=&quot]SISTEMAS DE REPRESENTACIÓN[/FONT]
    [FONT=&quot]2.1.[/FONT][FONT=&quot]Números negativos[/FONT]
    [FONT=&quot]2.2.[/FONT][FONT=&quot]Caracteres ASCII - ANSI[/FONT]
    [FONT=&quot]4.ESTRUCTURA DE LA MEMORIA[/FONT]
    [FONT=&quot] 5.LA PILA[/FONT]
    [FONT=&quot] 6.LOS REGISTROS[/FONT]
    [FONT=&quot]2.3.[/FONT][FONT=&quot]Generales[/FONT]
    [FONT=&quot]2.4.[/FONT][FONT=&quot]De base[/FONT]
    [FONT=&quot]2.5.[/FONT][FONT=&quot]De índice[/FONT]
    [FONT=&quot]2.6.[/FONT][FONT=&quot]De puntero[/FONT]
    [FONT=&quot]2.7.[/FONT][FONT=&quot]De segmento[/FONT]
    [FONT=&quot]2.8.[/FONT][FONT=&quot]Flags[/FONT]
    [FONT=&quot]3. [/FONT][FONT=&quot]INSTRUCCIONES[/FONT]
    [FONT=&quot]3.1.[/FONT][FONT=&quot]Modos de direccionamiento[/FONT]
    [FONT=&quot]3.2.[/FONT][FONT=&quot]La reina de las instrucciones :-)[/FONT]
    [FONT=&quot]3.3.[/FONT][FONT=&quot]Instrucciones de la pila[/FONT]
    [FONT=&quot]3.4.[/FONT][FONT=&quot]Instrucciones de comprobación y verificación[/FONT]
    [FONT=&quot]3.5.[/FONT][FONT=&quot]Instrucciones de salto[/FONT]
    [FONT=&quot]3.6.[/FONT][FONT=&quot]Instrucciones de subrutinas[/FONT]
    [FONT=&quot]



    [/FONT]Salto principales de asm (elemental)[FONT=&quot]


    75 o 0F85 jne Salta si no es equivalente
    74 o 0F84 je Salta si es equivalente
    EB jmp Salta directamente a . . .
    90 nop ( No OPeration ) Sin operación
    77 o 0F87 ja Salta si esta sobre
    OF86 jna Salta si no esta sobre
    0F83 jae Salta si esta sobre o igual
    0F82 jnae Salta si no esta sobre o igual
    0F82 jb Salta si es inferior
    0F83 jnb Salta si no es inferior
    0F86 jbe Salta si esta debajo o igual
    0F87 jnbe Salta si no esta debajo o igual
    0F8F jg Salta si es mayor
    0F8E jng Salta si no es mayor
    0F8D jge Salta si es mayor o igual
    0F8C jnge Salta si no es mayor o igual
    0F8C jl Salta si es menor
    0F8D jnl Salta si no es menor
    0F8E jle Salta si es menor o igual
    0F8F jnle Salta si no es menor o igual


    [/FONT] Tecnicas básicas del cracking

    Antes de empezar a explicar la técnicas básicas de cracking debemos tener en consideración lo sig:
    Para crackear programas no es algo sistematico, cada programa es diferente a otro, incluso el mismo programa con versiones diferentes, es por esto que para crackear algún programa se necesita de la intuición cracker también llamada Zen cracking como habíamos descrito anteriormente. Siempre es necesario la observación, tomar atención en los detalles del programa. Cada mensaje es una pista para nosotros, cada ventana molesta(nag) o cada limitacion de días o usos se puede considerar como punto de partida para atacar.
    Por lo tanto yo recomiendo que agarren lápiz y papel o si son un poco mas comodos como yo usen notepad.
    Bueno continuado con las técnicas explicare algunas técnicas básicas que son la base para empezar que se ponen a continuación.

    - harcoded serial
    - la técnica de la inversión del salto condicional (75/74)
    - eliminación de nags
    - Uso visor de registro( regmon y filemon)
    -Otras técnicas interesantes



    harcoded serial

    Esta técnica es muy antigua y a la vez estúpida. Se trata de localizar el mismísimo serial en el código desamblado de nuestro ejecutable victima. Cuando desamblamos nuestro ejecutable lo primero que hacemos casi siempre es buscar las string referenced text string o refeferencias de texto en busca de pistas que no lleven al código. Es ahí cuando vemos alguna cadena sospechosa, la probamos y jeje el programa queda registrado. Una protección mediocre que no vale la pena explicar mas que esto, ya que todavía no encuentro un programa con una protección tan tonta xD.



    Tecnica (75/74)

    Esta técnica es viejita también, pero todavía puede ser efectiva. Quien no ha bajado un crack que deja el ejecutable registrado ingresando cualquier nombre o pasword, pues se utilizo esta técnica para ello. La técnica consiste en modifical el salto condicional que es critico en que se que decide si nuestro serial es correcto o no. En palabras seria algo asi:

    “si el pass_ingresado es igual al pass_verdadero entonces salta al cartel a gracias por registrarte”
    Y lo dejaríamos asi:

    “si el pass_ingresado no es igual al pass_verdadero entonces salta al cartel a gracias por registrarte”

    Pudiendo ingresar cualquier pass para registrarte. En el único caso que no quedaríamos registrado es en el caso que ingresaramos el pass correcto, lo cual es muy improbable.
    Aca un ejemplo simplificado de un típico salto condicional:

    [​IMG]

    Vemos según el ejemplo que nuetro serial es 123456 distinto al serial correcto, por lo que nos saldrá el mensaje de código incorrecto. Basta con cambiar el salto por JNE ( salta si no son iguales ) y podremos ingresar cualquier serial para registrarnos. ¿Cómo lo cambiamos? Cada instrucción tiene un código hexadecimal el je es 74 y el jne 75 (por eso el nombre de esta técnica). Abrimos el ejecutable con algún editor Hexadecima y cambiamos los bytes.


    Tecnica nop (90)

    Consiste en nopear una instrucción que no queremos que por ningún motivo se ejecute, ¿entoces que es lo que hacemos? La eliminamos, de esta manera la instrucción dejara de existir y nunca podrá ejecutarse esa instrucción madita xD. Un ejemplo de nopeo seria :

    “si la compacion entre registros EAX y EBX no es igual entonces salta al cartel periodo de evaluación caducado”
    Y lo dejaríamos asi:

    Sin operaciones.. Eliminamos la sentencia de comparación tanto como la del salto condicional. Asi nunca saltaría al mensaje de error y el programa llegaría hasta el mensaje que nos conviene.
    Logicamente esta técnica en esta ocacion podría ser perfectamente reemplazable por la técnica 74/75, pero quiero que sepan que también se puede hacer asi en algunas ocaciones y tenerla en cuenta para otro tipo de ocaciones.



    Utilizacion de monitores (regmon y filemon)

    En algunas ocaciones los programas utilizan el registro de Windows (investigen si no están familiarizados con el termino) para guardar datos de por ejemplo la fecha de instalación de nuestro programa. Entonces cada vez que el programa inica este revisa el registro y de esta manera sabe cuantos dia de uso nos quedan.
    Tambien puede que se de el caso de que utilizen algún archivo propio donde guarden esa información. Oviamente ese archivo esta oculto en otra parte que no sea el directorio de instalación del software. Basicamente es el mismo principio, pero se utiliza mucho menos.

    Este tipos de técnicas no son de mi preferencia, debido a que es probable solo en programas que nos limiten los días de uso. Aparte de que el registro de Windows es utilizado por todos los programas y tenemos muchas claves que tendremos que revisar por una pista (aunque se puede hacer un filtro que nos indique solo las que usa el programa victima). Para mi es aburrido revisar la lista, pero no se descarta este tipo de técnica. En el cracking se lucha con todo, cualquier herramienta que nos ayude será bienvenida.


    **********************************************************
    [FONT=&quot][​IMG][​IMG]
    [/FONT] Empezando con los crackmes


    Empezaremos a meterle mano a unos crackmes facilisimos les dejo la pagina para que los descargen:

    http://s7r1d3r.blogcindario.com/2006/05/00008-crackme.html

    el crackme 1 realmente se hace en 3 seg especialmente si lo hacemos con wdasm,ya que es un harcoded (por fin encontre uno) especial para empezar. Solo lo abren con wdasm y ven las sting references. Echen mano porque realmente es muy facil.Mas adelante lo explicare como hacerlo de forma mas "profesional" con el olly y tambien como instalar y configurar para aprovechar al maximo sus posibilidades.

    Les dejo los programas para crackear:

    el wdasm en 3 versiones (es conveniente tener las 3)

    http://rapidshare.com/files/200273502/W32dasm.rar.html

    y el famoso olly para que lo tengan y si quieren lo prueben

    http://www.ollydbg.de/odbg110.zip

    [FONT=&quot]
    [/FONT]
     
  2. Sch3moS

    Sch3moS Usuario Habitual nvl.3 ★
    187/244

    Registrado:
    17 Abr 2008
    Mensajes:
    29.617
    Me Gusta recibidos:
    8
    vale buen aporte, gracias.
     
  3. NenoFilth

    NenoFilth Usuario Nuevo nvl. 1
    6/41

    Registrado:
    27 Dic 2008
    Mensajes:
    63
    Me Gusta recibidos:
    0
    Genial el APORTE... GRAcias Men
     
  4. Kefka_LvL99

    Kefka_LvL99 Usuario Casual nvl. 2
    37/41

    Registrado:
    29 Ene 2009
    Mensajes:
    2.215
    Me Gusta recibidos:
    1
    Vale weon se ve weno
     
  5. NenoFilth

    NenoFilth Usuario Nuevo nvl. 1
    6/41

    Registrado:
    27 Dic 2008
    Mensajes:
    63
    Me Gusta recibidos:
    0
    vale profe...
    nos vemos en la siguiente clase XD
     
  6. cfslack

    cfslack Usuario Casual nvl. 2
    37/41

    Registrado:
    29 Dic 2006
    Mensajes:
    3.256
    Me Gusta recibidos:
    7
    Chincheta :D
     
  7. nagiza

    nagiza Usuario Nuevo nvl. 1
    1/41

    Registrado:
    14 Mar 2008
    Mensajes:
    1
    Me Gusta recibidos:
    0
    buenisimo...
     
    #7 nagiza, 16 Feb 2009
    Última edición: 16 Feb 2009
  8. Heavyjano

    Heavyjano Usuario Casual nvl. 2
    37/41

    Registrado:
    23 Jun 2007
    Mensajes:
    1.988
    Me Gusta recibidos:
    4
    uta io soy programador, pero em da una paja esa wea won xD
    vale = comparito sirve muxo a algunos
     
    A NenoFilth le gusta esto.
  9. elxmaikol

    elxmaikol Usuario Habitual nvl.3 ★
    187/244

    Registrado:
    8 Mar 2009
    Mensajes:
    18.411
    Me Gusta recibidos:
    5
    musho para mi u.u , tenia ganas de serlo :/
     
  10. FonchouC

    FonchouC Usuario Nuevo nvl. 1
    1/41

    Registrado:
    29 Abr 2009
    Mensajes:
    25
    Me Gusta recibidos:
    0
    vale wn ta la raja
     
  11. madafaca

    madafaca Usuario Nuevo nvl. 1
    6/41

    Registrado:
    24 Abr 2009
    Mensajes:
    75
    Me Gusta recibidos:
    0
    ASM la lleva D: jajaja
     
  12. Chespy1986

    Chespy1986 Usuario Nuevo nvl. 1
    17/41

    Registrado:
    7 Abr 2009
    Mensajes:
    857
    Me Gusta recibidos:
    2
    wena info super explicadito como los de ricardo narvaja XD
    se agradece harto y espero la proxima clase

    Salu2