Cracking desde cero para súper newbies
-
Upload
oscar-garcia-sanchez -
Category
Documents
-
view
415 -
download
4
Transcript of Cracking desde cero para súper newbies
Cracking desde cero para sper newbies Hola!!! Nos vemos una vez ms, esta vez, mi segundo tutorial y espero que no sea el ltimo!!!. Como siempre, si algo no queda bien ex plicado hganmelo saber a [email protected] y les contestar cuanto antes. Tambin pueden contactarme por si quieren que modifique algo del tutorial para que se entienda mejor o si quieren que agregue temas. Introduccin Bueno, este tutorial est dedicado a los qu e no tienen ningn conocimiento de lo que es crackear o Ingeniera Inversa. Este tutorial lo hago de acuerdo a la manera en que yo entend las cosas cuando recin empezaba, a ver si les resulta ms fcil aprender as. T e mas: 1)Qu necesitamos? 2)Herramientas 3)Crackear y los sistemas numricos 4)Muy bsico sobre ensamblador 5)Familiarizndonos con las herramientas 6)Nuestro primer crack 7)Recomendaciones 8)Despedida y agradecimie ntos
1) Qu necesitamos? Para esto de la Ingeniera Inversa se necesitan fundamentalmente las siguientes cosas: 1)Si quieren hacerse las cosas ms fciles para empezar, algn conocimiento de ensamblador, ste es un lenguaje de programacin de bajo nivel. Cuanto ms sepan mejor y ms rpido crackearn (para empezar, les recomiendo que lean el tutorial de Pr@fEsOr X sobre ensamblador que est muy bueno) 2)Cuando se llega a cierto nivel, a veces la ayuda de otro/s cracker/s ms experto/s 3)Ganas de aprender. No es leer los tutoriales sin entender nada y hacer los cracks sin saber lo que hicimos, es estudiar y c omprender el funcionamiento del programa. 4)Herramientas 2) Herramientas 1) Depurador o debugger: es un programa que permite detenerte en cada paso que realizan otros programas, creo que no expliqu bien. Un programa no es ms que un conjunto de instrucciones, haz esto, haz lo otro. Entonces cuando se est ejecutando un programa y lo "depuras", por ejemplo hay una inst ruccin que dice: Muestra un cartel con las letras de color verde, te detienes en esa instruccin para poder cambiarla, parchearla, etc (el depurador te muestra todo en lenguaje ensamblador). El depurador ms famoso que usan casi todos los crackers es el Soft Ice (de ahora en adelante le llamaremos SIC E) y se pueden hacer cosas que ni siquiera te has imaginado con l. Otros depuradore s: tr (ahora est el TRW2000 que est bastante bueno), SICE (que lo utilizan casi todos los crackers), Debug( lo tienen todas las PC, slo abre el DOS, escribe Debug aprieta enter y ya ests en el, no lo recomiendo). 2) Desensamblador o dissasembler: es te programa convierte el ejecutable de otros programas hechos en otros lenguajes a lenguaje ensamblador. A diferencia del depurador no lo hace cuando el programa se est ejecutando, si no que cuando nosotros queramos (nosotros abrimos el ejecutabl e con el desensamblador y estudiamos el cdigo todo el tiempo que queramos, a esto se le llama listado muerto). Desensambladores: IDA pro (DOS 32 bits), W32Dasm(el que la mayora usa y mi preferido), Sourcer 7, y muchos ms. 3) Editor Hexadecimal: es un programa que te permite editar archivos de forma hexadecimal y as cambiar bytes en l, les ensear a convertir de decimal a hexadecimal y binario. Editores hexadecimales: Hacker's View (DOS 32 bits), Ultraedit, y Hex Workshop, mi preferido. Creo que esto es todo ya que pienso que al principio no necesitarn herramientas como el Frogs Ice(programa que se usa con los ejecutable s que tienen mtodos de detectar cuando el SICE est corriendo, y se usa para "esconderlo". Estas herramientas las pueden encontrar en la pgina de http://www.crackstore.com/ , http://w3.to/protools , y si falta alguna fjate en otros tutoriales o en las pginas de TNT cracking team, kUT, Wkt, en la de karpoff, por supuesto en la de mi nuevo grupo, K-FoR y otras que hay millones de links. 3) Crackear y los sistemas numricos Supongo que ya tienen todo, si lo tienen comencemos lo terico de verdad. Por favor lean algo sobre ensamblador, es verdad, a l principio todos estamos ansiosos de empezar a crackear ahora mismo y sin saber absolutamente nada ensamblador ni de ninguna de las herramientas pero lamentablemente eso no es posible:-( .Hay que tener paciencia para llegar a ser un buen cracker. Qu es crackear? Crackear, o Ingeniera Inversa (Reverse Engineering, como dicen los ingleses) se basa en reventar protecciones de software o hardware con fines intelectuales, personales, u otros, pero nunca lucrativos. De esta manera, el programa que estemos crackeando fu ncionar para lo que nosotros queramos y no para lo que fue diseado. Para qu crackear? La sociedad en que vivimos da asco. Hay una enorme discriminacin social. En esta sociedad la mayora de la poblacin est so metida al control de los que tienen dinero. El Cracking, es una forma de distribuir la riqueza entre la poblacin. Si ves un programa en Internet que te gusta y no t ienes una cuenta un un banco
internacional ni nada de ello, para que esperar para tenerlo, crackalo y publica el crack en Internet y estars ayudando a mucha gente que vive a merced de los que son "importantes"(o sea, tienen cuentas en bancos internacionales, mucho dinero, etc). Por supuesto que el Cracking tambin es para los programadores. As podremos ensearles que sus programas no son perfectos y tienen muchos errores tontos que podran corregirlos. Y tambin ensearles a no ser perezosos y crear buenas protecciones. Empezaremos por aprender lo que es un sistema numrico. Nosotros contamos el el sistema numrico de base decim al (la base de este sistema es el nmero 10). Esto quiere decir que el primer nmero formado por ms de una cifra (0 1 2 3 4 5 6 7 8 9 10)de este sistema es el 10. Pero para las computadoras, este sistema no es conveniente, ya que la informacin se maneja codificada en forma de bits verdaderos y falsos 1=verdadero 0=falso. Esto lleva a la utilizacin de dos sistemas en la informtica, binario (de base dos) y hexadecimal (de base diecisis). Convertir nmeros de binarios a decimales: En ensamblador nos enc ontramos con la necesidad de convertir nmeros de binarios utilizados por la PC, a decimales que son los que nosotros entende mos. Mira la siguiente tabla y puedes ir guindote: Decimal 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Binario 1 10 11 100 101 110 111 1000 1001 1010 1011 1100 1101 1110 1111
Como se muestra en la tabla 1+1 en binario=10. Esto es muy fcil, ya vers. Los nmeros de binarios a decimales se pasan as: Binario: 11011 Decimal:
1 + 2 + 0 + 8 + 16 todo esto = 27 en decimal Nota: Hice este dibujo para que se entendiera mejor. En realidad, en la computacin, el carcter ^ se utiliza para potenciar y el carcter *se utiliza para multiplicar. Supongo que todos entienden ese dibujo. Si lo miran bien, vern que los nmeros que estn resaltados en azul, forman el nmer o binario. Convertir nmeros de decimales a binarios: Hay varias formas de hacerlo pero esta es la ms fcil: Ejemplo, el nmero 25 en decimal. 25/2 =12 y el resto es 1 12/2 = 6 y el resto es 0 6/2 = 3 y el resto es 0 3/2 = 1 y el resto es 1 1/2 = 0 y el resto es 1 Despus tomamos el nmero de abajo hacia arriba y tenemos el nmero en binario 11001. Nmeros hexadecimales: Puedes ir guindote con la siguiente tabla: Decimal 1 2 3 4 5 6 7 8 9 10 11 12 13 Hexadecimal 1 2 3 4 5 6 7 8 9 A B C D
14 15 16 17 18 19 20 21 22
E F 10 11 12 13 14 15 1A
Como ven en esta tabla, en el sistema hexadecimal los nmeros que estn formados por nmeros de una sola cifra son: 0 1 2 3 4 5 6 7 8 9 A B C D E F. Es exactamente igual que contar en decimal pero nada ms que el 9 sera el 16 (no s si entienden). Para convertir de nmeros hexadecimales a binarios se debe agrupar en grupos de cuatro bits empezando de derecha a izquierda. Despus, en el ltimo grupo, se rellenan los espacios en blanco con ceros. Tomaremos como ejemplo el nmero binario 1101011 separamos en grupos de 4 bits, 110 1011 rellenamos los espacios con ceros, 0110 1011 Despus tomamos cada grupo y lo transformamos a base 10(pueden fijarse en la tabla) 0110= 6 1011= 11 Pero como 611 no es correcto en el sistema hexadecimal sustituimos el 11 por su valor correspondiente en hexadecimal y obtenemos 6 Bh (la h se pone para indicar que el nmero est en el sistema hexadecimal) Para convertir un nmero de hexadecimal a binario sol o es necesario invertir estos pasos. SUPONGO que alguna vez tuvieron una clase de matemticas y saben sumar, restar y potenciar, no, era un chiste: -) ya que si no saben, estn muertos (y les sugiero que tomen clases de matemticas) 4) Muy bsico sobre ensamblador Si ya leyeron algo sobre ensamblador, supongo que ya saben esto, pero lo escribo para los que son vagos y no se quisieron mol estar en dejar este tutorial y leer otro para luego volver a este. El ensamblador o ASM es un lenguaje de programacin de bajo nivel. Esto quiere decir que, a diferencia de C o C++ (lenguajes de alto nivel), mientras ms programemos o ms programa creemos, menos control tendremos sobre ste. Este lenguaje les va a ayudar mucho ya que es fcil de aprender y necesitan saber de e nsamblador para saber crackear . Registros Empezaremos por aprender (los que no leyeron sobre assembler) que son los registros. AX, BX, CX, DX (no son slo estos, hay m s pero por ahora pienso que es suficiente). Estas "palabras" son registros de d atos. stos contienen clculos y otras cosas que necesita un programa para ejecutarse. Es como que guardan datos temporalmente en la memoria. Los registros de 16 bits son estos (AX, BX, CX y DX) pero si trabajamos en 32 bits, o sea Windows 95, se les agrega una E delante entonces los registros de 32 bits seran as: EAX, EBX, ECX, EDX... Si ven algo como AL y AH, no se preocupen, es que los registros se separan (BX se separa BL y BH...) Cada registro tiene un v alor que se le asigna y se le modifica con algunas instrucciones en ensamblador. Aqu tienen los principales saltos condicionales e incondicionales del ensamblador: Hexadecimal: 75 o 0F85 74 o 0F84 EB 90 77 o 0F87 0F86 0F83 0F82 0F82 0F83 0F86 0F87 0F8F 0F8E 0F8D 0F8C ASM: jne je jmp nop ja jna jae jnae jb jnb jbe jnbe jg jng jge jnge Significa: salta si no es igual salta si es igual salta directamente a..... ningn funcionamiento (No OPeration) salta si es superior salta si no superior salta si es superior o igual salta si no est sobre o igual salta si est debajo salta si no est debajo salta si est debajo o igual salta si no est debajo o igual salta si es mayor salta si no es mayor salta si es mayor o igual salta si no es mayor o igual
0F8C 0F8D 0F8E 0F8F
jl jnl jle jnle
salta si es menor salta si no es menor saltan si es menor o igual saltan si no es menor o igual
Cuando vean algn cmp por ejemplo cmp eax, ebx, quiere decir que compara, cmp proviene de "comparar". Compara el valor de los registros para luego haber un salto condicional o incondicional como 75 o 0F84 (condicionales) o un EB (incondicional). Veamos un poco de esto en un ejecutable cualquiera de mi computadora: :00402BB1 6A28 push 00000028"Thanks for registering 3D FotoStudio!" | :00495F66 B82C604900 mov eax, 0049602C :00495F6B E8940EFAFF call 00436E04 :00495F70 EB3D jmp 00495FAF * Referenced by a (U)nconditional or (C)onditional Jump at Address: |:00495EAB(C) | :00495F72 6A00 push 00000000 :00495F74 668B0D20604900 mov cx, word ptr [00496020] :00495F7B B201 mov dl, 01 * Possible StringData Ref from Code Obj ->"Incorrect registration key!" | :00495F7D B85C604900 mov eax, 0049605C :00495F82 E87D0EFAFF call 00436E04 :00495F87 A1A8F44900 mov eax, dword ptr [0049F4A8] Hasta ahora no tenemos que preocuparnos de nada porque sabemos que el mensaje de "Incorrect registration key!" est llamado d esde la direccin 00495EAB. Vallamos a esa direccin a ver que hay. Hagan clic en goto/go to code location y escriban la direccin( 00495EAB). :00495EA9 84C0 test al, al --> compara el s/n correcto con el que escribimos??? :00495EAB 0F84C1000000 je 00495F72--> si son iguales salta a la direccin 00495F72 :00495EB1 C60514324A0000 mov byte ptr [004A3214], 00 :00495EB8 8B45FC mov eax, dword ptr [ebp-04] :00495EBB 8B80C8020000 mov eax, dword ptr [eax+000002C8] Que pasara si revertimos el salto? Probemos. Abran el Hex Workshop hagan clic en edit/goto y escriban el offset del salto o sea 952AB(algo que no expliqu y que me gustara dejar claro es que el offset es la direccin real de memoria. Cambiemos el 0F84 a 0F85 y guardemos los cambio s. Tratemos de registrar el programa. Introduzcamos un nombre como dek_Oin y un serial como 123456789. OK y ...
Lo logramos!!!!!!!!!. Nos vamos todos a festejar. Vuelvo del festejo. Antes no le haba encontrado ninguna utilidad a este programa as que voy a ver si le puedo encontrar una ahora. Abro el programa y... Qu pas?. No lo entiendo. Unregistered Shareware -Version, qu es eso?. No se preocupen, es un error tpico de cuando se empieza con la Ingeniera Inversa. Lo que hicimos al cambiar ese salto, fue hacer que el programa siempre muestre la ventanita de "Thanks for re gistering 3D FotoStudio!", pero en realidad, el programa no est registrado. Por eso es que puse los ???en :00495EA9 84C0 test al, al. En realidad el programa no compara el s/n correcto con el que introducimos, lo que hace es ver si muestra el mensaje de "Thanks for registering 3D FotoStudio!" o no lo muestra. Segundo ataque Volvamos a desensamblar con el W32Dasm. Ahora busquemos la cadena Unregistered Shareware -Version en las String References y aqu est:
Hagan clic muchas veces para ver cuantas referencias hay sobre ella pero solo hay una que nos lleva a: :00495649 803D14324A0000 cmp byte ptr [004A3214], 00 :00495650 7440 je 00495692--->COMPARA SI ESTAMOS REGISTRADOS O NO :00495652 8D55F4 lea edx, dword ptr [ebp-0C] :00495655 8B45FC mov eax, dword ptr [ebp-04] :00495658 E8C382F8FF call 0041D920 :0049565D 8B55F4 mov edx, dword ptr [ebp-0C] :00495660 8B45FC mov eax, dword ptr [ebp-04] :00495663 05B8030000 add eax, 000003B8 :00495668 E83FE3F6FF call 004039AC :0049566D 8D55F4 lea edx, dword ptr [ebp-0C] :00495670 8B45FC mov eax, dword ptr [ebp-04] :00495673 E8A882F8FF call 0041D920 :00495678 8D45F4 lea eax, dword ptr [ebp -0C] * Possible StringData Ref from Code Obj ->"(Unregistered Shareware -Version)" | :0049567B BAF45D4900 mov edx, 00495DF4 Ven el ltimo salto antes del mensaje, ese es el que tendremos que parchear. Abran el Hex Workshop y instoduzcan el offset de l salto(94A50). Cambien el 74 a 75 guarden los cambios y ejecuten el programa. Perfecto!!!!!!!!!!!!. Ahora si funciona.Todo se ter min. Ahora pueden borrar el programa ya que nos ocupa 2.81 megas de basura. Despedida y agradecimientos Gracias a mi nuevo grupo K -FoR, por invitarme a ser miembro y por su apoyo. Gracias a Pr@fEsOr X por su fabulosa compilacin (no dejes de bajrtela!!!) y por el trabajo que est realizando en benficio nuestro grupo. Gracias tambin a Karpoff, por su *gran* ayuda y sus consejos, y a Txeli, por su apoyo moral y por pasarme algunos programas interesantes. Y finalmente gracias a ustedes por leer mi manual y a todos los que me mandaron mails. Saludos, nos vemos en el prximo manual!!!,
Cracking desde cero para sper newbies 4 Los terrenos del Soft Ice!!! Saludos a todos!!!!. Como les va?. Despus de un bien merecido perodo de descanso v uelvo a estar activo para escribir este tutorial. Desde ahora, olvdense de JE a JNE o EB. Supongo que ya aprendieron todo eso y que lo hacen bien. Ahora la cosa se complica aunque con la prctica todo se vuelve f cil. Aprenderemos a utilizar una herramienta completamente nueva para ustedes. Empezaremos con el Soft Ice, desde ahora en adelante le llamaremos SiCE ok?. Basta de introducciones y a trabajar. Temas que trataremos No hablaremos acerca de la configuracin del SICE o del Winice.dat ya que esos temas los vimos en el manual nmero 1.Estos son los temas que se tratarn a lo largo de este manual: 1) Descripcin 2) Utilizacin b sica 2.1) Teclas de funciones
2.2) Break Points 2.3) Break Points on Memory Access 2.4) Comandos para manejar los Break Points 2.5) Comandos para ver los procesos en ejecucin 3) A buscar un serial !!! 4) Despedida 1) Descripcin Se podra definir como un programa creado para identificar los errores lgicos de los otros programas (bugs) y proporcionar m edios para repararlos. Los debuggers o depuradores son utilizados al mismo tiempo en que el programa est ejecutndose con el fin de facilitar la obtencin de informacin relativa a los procesos mientras estos estn teniendo lugar. Un buen depurador debe disponer de opciones para mostrar el contenido de la mem oria y de los registros, e incluso para modificarlos, y para provocar la ejecucin de rutinas durante la presentacin de datos importantes que faciliten el diag nstico de fallos. 2) Utilizacin bsica El SiCE aparecer si pulsamos las teclas ctrl+d, estas teclas estn predeterminadas por defecto. No podramos decir que se ejecuta cuando presionamos estas teclas ya que el SiCE est siempre monitoreando los procesos que se ejecutan en la PC, es decir, si lo tenemos cargado en el autoexec.bat, siempre que usemos la computadora estar ejecutndose, pero si creamos un bat y tenemos que reiniciar la PC para cargar el SiCE ste se ejecutar e n el momento que se cargue el bat. Si abren el SiCE, notarn que hay un montn de cosas, nmeros que seg uro que les son familiares (nuestro querido ensamblador) y nmeros que no les son familiares. Notarn tambin que el SiCE est dividido en ventanas. Cada uno de ustedes pueden tener o ms o menos ventanas se gn como las tengan configuradas. Les pueden camb iar el tamao, las pueden quitar y pueden hacer alguna que otra cosilla ms con las ventanas. 2.1) Teclas de funciones A continuacin, les doy las teclas que utilizaremos y su funcin: F1