CURSO DE CRACKEO PARA EMPEZAR DESDE CERO (LECCION UNO) A pedido de muchos listeros de CUANDOQUIERAS y CONECTADOS, voy a tratar de explicar en un curso sencillo las bases para crackear programas o mejor expresado las bases de la INGENIERIA REVERSIBLE que es el arte de revertir las protecciones que poseen ciertos programas para hacerlos accesibles a todos y no haya que pagar por usarlos. Mucha gente dice que esto no es ético y que esta mal pero yo no estoy de acuerdo con esa opinión, yo creo que hay que crackear y distribuir gratuitamente los cracks, sin hacer negocio, para favorecer a la gente con menos recursos a que puedan acceder a programas que de otra manera no podrían usar. ES DIFICIL CRACKEAR? HAY QUE TENER GRANDES CONOCIMENTOS? En realidad no se necesitan grandes conocimientos para empezar a crackear, lo que si es necesario es dedicarse, practicar, preguntar lo que no se entienda (NO QUEDARSE CON DUDAS), y una vez que ya uno comprenda las cinco o seis primeras lecciones, intentar crackear todo lo que caiga en la mano de uno para practicar, siempre si uno se traba puede preguntar y así seguir aprendiendo. Eso si, el programa victima es el rival de uno como en un ring de box, y si uno recién esta aprendiendo tiene que ir gradualmente buscando rivales que estén a la altura de lo que uno va aprendiendo, si después de leer esta primera lección sola alguien quiere animársele al CUENTAPASOS por ejemplo, que es un rival de fuste hasta para los grandes crackers, seguro va a caer derribado en el primer round, por eso es importante seguir el curso e ir practicando. Generalmente los mejores rivales para las personas que recién se inician son los programas SHAREWARE de hace unos años porque así como creció el arte cracker también fueron creciendo las protecciones y no es lo mismo la versión 1.0 de un programa de hace 4 o 5 años que la versión 2000, que salió el mes pasado e incorpora lo ultimo en protecciones. Igual no todo es tan lineal, he crackeado programas editados en estos últimos meses cuya protección es prácticamente inexistente y de cualquier manera gradualmente vamos a ir incorporando los conocimientos para ir subiendo nuestra categoría en el arte crack y siendo cada vez mejores rivales para los programas. Lo que si quería dejar constancia es que yo me considero un aprendiz, aunque me considero capaz de crackear casi el 80 % de los programas que están disponibles, a principio de año comencé a estudiar este arte y he mejorado muchísimo, sobretodo por la practica y leyendo tutoriales y consultando en foros con los grandes maestros de esto, mas adelante cuando tengan ciertos conocimientos les voy a dar las direcciones de los foros, una vez que ya estén en el tema, para no preguntar cosas obvias y quedar mal. Si mi léxico no es muy técnico y no respeta 100% los tecnicismos, discúlpenme yo estoy tratando de hacerme entender en la forma mas fácil posible aunque las palabras no sean exactas. EMPECEMOS Como dije voy a tratar de ir despacio y no atosigar a nadie, los conocimientos que vamos a aprender van a ir muy de a poco para no saturar y de una lección a la otra se puedan ir asentando. NUESTRA PRIMERA VICTIMA (ARCHIVO CRACKME) El archivo crackme.exe que subí a FREESERVERS va a ser nuestra primera victima. Es un programita de 12k que no sirve para nada, solamente para comenzar a enseñar como se crackea y que fue hecho con ese fin. COMO SE ENCARA EL CRACKEO Antes que nada les recomiendo imprimi las lecciones, porque no es lo mismo hacer las cosas y leer a la vez que estar cerrando y abriendo programas para poder seguir la explicaión. El primer paso es estudiar a la victima, ejecutarlo y ver que tipo de programa es (CON TIPO DE PROGRAMA ME REFIERO A QUE SI SE REGISTRA CON UN NUMERO DE SERIE, SI VENCE DENTRO DE UN PLAZO, ETC), en nuestro primer caso es un programa que se registra con un numero de serie. Vamos a probar, lo ejecutamos y vamos a HELP y después a REGISTER, donde nos aparece una ventana con lugar para escribir el nombre (NAME) y el NUMERO DE SERIE (SERIAL). Vamos a poner datos inventados en los dos casilleros para ver que pasa, para que todos sigamos el mismo hilo pongamos el mismo nombre y numero de serie que uso yo (IGUAL PODRIA SER CUALQUIERA SIMPLEMENTE USEMOS TODOS EL MISMO PARA PODER ESTAR TODOS IGUAL EN EL MISMO EJEMPLO) NAME: PEPE SERIAL:989898 PEPE VA CON MAYUSCULAS Y EL NUMERO 989898 lo elegí porque el 999999 ya esta muy quemado (BAH CUALQUIER NUMERO ES IGUAL), hacemos clic en OK y obtenemos como resultado una triste ventana que en ingles nos dice que no tuvimos suerte (NO LUCK THERE MATE), podría decir también NUMERO INVALIDO o cualquier otro mensaje de ese deprimente estilo. Este mensaje además de decirnos que el numero de serie no es correcto, nos esta gozando (se burla) por lo que lo vamos a reventar de lo lindo al Gil que hizo esto. Siempre que comencemos a craquear un programa y como método de organización les aconsejo, usar una hojita en blanco donde escribimos el nombre del programa y TODOS los datos que vamos obteniendo de el, en este caso, es muy importante escribir el mensaje exacto que nos dice cuando pusimos el numero equivocado, anotamos No luck, there mate! en el papel y al lado le ponemos MENSAJE DE CHICO MALO. Ahora vamos a explicar que es CHICO MALO y CHICO BUENO para los crackers. Cualquier programa que verifica un numero de serie, llega un punto en que INEVITABLEMENTE va a comparar el numero que pusimos equivocado (989898 en el ejemplo), con el numero verdadero de serie. Tiene que comparar si o si, el numero nuestro con el verdadero y tomar una decisión, si decirnos que es incorrecto (CHICO MALO) o correcto y registrarnos ( CHICO BUENO) Se dice CHICO MALO a la parte del programa que después de comparar ambos números, nos tira para ponernos el cartel lúgubre de INCORRECTO o como en este caso NO LUCK THERE MATE! CHICO BUENO es supuestamente si la verificación es correcta y yo puse el numero de serie correcto (PORQUE LO PAGUE O LO CRACKEE) entonces soy un CHICO BUENO y la parte del programa donde sos derivado después de la comparación y que termina en un cartelito que dice NUMERO CORRECTO REGISTRADO o algo asi. Entonces tenemos varias alternativas, o ponernos a jugar insistiendo con números de serie distintos hasta que en cinco o seis años la peguemos y nos registremos o seguir este curso y crackear esa bazofia de una vez por todas. Vamos a comenzar a usar la primer herramienta que es el WDASM, este es un desensamblador ideal para novatos como yo, ya que los desensambladores avanzados para mi complican mucho las cosas en cambio el WDASM es claro como el agua y fácil, fácil, fácil. WDASM o el LISTADO MUERTO Empecemos con la primera herramienta que aprende a usar todo cracker el WDASM. El Wdasm es un programa que toma un archivo y si puede lo desensambla, ahora bien que es desensamblar? Un programa como este crackme por ejemplo es una seguidilla de numeros en FORMATO HEXADECIMAL o sea podria ser como ejemplo FF A5 B9 32 44 76 99 , etc etc etc Evidentemente una cadena de números no nos dice mucho acerca de lo que el programa quiere hacer y crackear eso seria mas difícil que hacer que no se cuelgue WINDOWS. (CHISTE) Me olvidaba decirles que es esto del formato hexadecimal, en comparación con la numeración decimal que usa números del 0 al 9, la numeración hexadecimal después del 9 usa la A que seria el 10 decimal, la B que seria el 11, la C que seria el 12 y asi hasta la F que es el 16. Para los que no quieren problemas, con la calculadora de WINDOWS, la cambian a VER- CIENTÍFICA y pueden convertir números DECIMALES EN HEXADECIMALES y viceversa, si en la pantalla pongo DF y después hago clic en decimal me aparece el resultado 223, y viceversa si pongo por ej. 87 y hago clic en HEXADECIMAL me sale el resultado que es 57. Bueno ahora que ya tragamos ese primer sapo sigamos. Como les dije antes una cadena de números no sirve para nada, si contamos con un programa como el WDASM, entre otras cosas nos puede agrupar esos números y traducirlos a sentencias en IDIOMA ENSAMBLADOR. No se asusten que no es tan fiero el LEON como lo pintan, abramos el WDASM y en donde dice DISASSEMBLER hagamos clic y elijamos OPEN FILE TO DISSASEMBLE para cargar la fila a destripar. Buscamos por los directorios la fila crackme.exe y la cargamos. Bueno como es una fila chiquita se desensambla rapido, bueno ahí tenemos vamos despacio para no marearnos. Lo primero que hay son datos sobre el archivo que por ahora no vamos a ahondar (YA LLEGARA SU MOMENTO), la primera pregunta que surge es bueno donde comienza el programa, cual es la primera sentencia que se ejecuta? Bueno eso es bastante facil, abrimos el menu GOTO y elegimos GOTO PROGRAM ENTRY POINT que quiere decir IR A PUNTO DE ENTRADA DEL PROGRAMA, si hacemos clic ahí vamos a la primera sentencia que es: PROGRAM ENTRY POINT 0040100 6A 00 PUSH 00000000 bueno no es necesario enloquecerse con lo que significa la sentencia PUSH pues no es de gran utilidad para un cracker, lo que hay que saber es que 0040100 es la posición de memoria donde el programa va a comenzar a ejecutarse una vez que este en la memoria después de hacer clic sobre el archivo, y los números 6A 00 son los dos primeros números hexadecimales (EL QUE ESTA EL LA POSICION 40100 y 40101) que juntos forman la sentencia PUSH 00000000 en idioma ensamblador. Bueno ya basta de pavadas y vamos a lo fácil después que tragamos ese pequeño sapo, podemos eso si anotar en nuestro papel la dirección del PUNTO DE ENTRADA que aunque no es necesario en este caso para crackear, en otros programas puede serlo y es bueno saber como encontrarlo. ACCION, ACCION La hinchada clama accion y vamos a empezar a crackear esto. Entre los iconitos del WDASM hay uno que es el penúltimo, al lado de la impresora, que es el de STRING DATA REFERENCES, que son las referencias a las cadenas de texto que tiene el programa, nos aparece una ventanita con distintas cadenas de texto, entre ellas nuestra conocida NO LUCK THERE MATE! , que nos mostro el programa cuando pusimos como numero de serie el 989898, JA JA estamos entrando. Hcemos doble clic exactamente encima de esa cadena de texto y el WDASM cambia de mostrarnos el ENTRY POINT a mostrarnos donde usa el crackme la cadena de texto. ENTRAMOS ENTRAMOS. REFERENCED BY A CONDICIONAL JUMP or UNCONDICIONAL JUMP AT ADRESS 40138B 004013AC pop esi 004013AD push 00000030 004013AF push 402160 ; "No luck!" 004013B4 push 402169 ; "No luck there, mate!" 004013B9 push [ebp+8] 004013BC call 40143A MessageBoxA Esto es casi exactamente donde van a caer, le quite los numeros hexadecimales para no confundir, pero es esto, la parte del programa donde usa el texto NO LUCK THERE MATE! O sea esta es la parte del programa del CHICO MALO, aca el programa nos tira después de haber comparado y ver que el numero que pusimos 989898 no es el correcto y decide tirarnos aca y ponernos el cartel triste de que nuestro numero no es valido. Miremos aun sin saber nada un poco esto, cuando el WDASM nos dice REFERENCED BY A CONDICIONAL JUMP or UNCONDICIONAL JUMP AT ADRESS 40138B Quiere decir que desde esa dirección (40138B) el programa nos tiro aca en esta zona de CHICO MALO, Por lo tanto si desde alli nos tiro a la zona de chico malo, por alli debe estar la comparcion de los numeros de serie el 989898 con el verdadero y después el salto hacia la zona de chico malo o sino siguen en la zona de chico bueno. Veamos Vamos de vuelta a GOTO y elegimos GOTO CODE LOCATION, que sirve para ir a una dirección que nosostros queremos, en la ventanita que nos aparece tipeamos 40138b y aparecemos en el lugar donde hay comparaciones CMP y según el resultado de esas comparaciones un salto (CUALQUIER SENTENCIA QUE EMPIZA CON J o sea JE,JB,JZ,JNZ, etc) Esa son las dos sentencias que mas nos interesan a los crackers CMP ebx,eax por ejemplo compara el contenido de eax con el contenido de ebx, y si en eax esta nustra clave falsa, seguro que en ebx esta la clave verdadera, después siempre de la comparación esta el salto condicional que es que salta a la zona de CHICO MALO y a poner el cartel de NO LUCK THERE MATE si son distintos y sigue ejecutándose sin saltar si son iguales. Veamos que encontramos ahí. 401385 test al,al 401387 je 40139c 401389 cmp al,41 40138b jb 4013ac aquí salta a la zona de chico malo (NO LUCK THERE MATE!) 40138d cmp al,5a 40138f jnb 401354 O sea que el paso final aquí dado que el WDASM no puede ver los valores que se estan comparando para saber la clave seria usar el SOFTICE pero el problema es que el uso del softice se va a ver en la leccion 2, pero el softice permite ejecutar el programa y parar justo en la sentencia 401389 para ver que se compara ahí, igual sin haberlo hecho les digo que ahí no esta la comparacion de la clave porque ahí se ve que compara el valor AL (DONDE PODRIA ESTAR 989898) por ejemplo, con un valor hexadecimal fijo , con el numero 41, asi que aquí me parece que no es, el softice o el trw2000 tendrian la palabra.(EN REALIDAD EL PROFESOR ES UN TRAMPOSO Y SE FIJO CON EL SOFTICE QUE ESTA COMPARACION NO ES LA QUE BUSCAMOS) Volvamos al WDASM a STRING DATA REFERENCES y hagamos click de nuevo en el texto NO LUCK THERE MATE, si hacemos doble click aparecemos en la seccion que ya estudiamos, y si volvemos a hacer doble click aparecemos en otro lado o sea que el cartel NO LUCK THERE MATE! esta en otra parte del programa tambien (NOS QUISIERON CONFUNDIR) vemos que no esta en ninguna parte mas solo en esas dos. Veamos donde aparecemos REFERENCED BY A CALL at adress 401245 y despues siguen varias sentencias donde usa el NO LUCK THERE MATE, entonces vamos a ver desde donde viene a 401245 vamos a GOTO - GOTO CODE LOCATION y tipeamos 401245 Lo que aparece es mucho mas agradable a la vista que lo que habiamos encontrado antes, aquí hay una comparacion de eax y ebx que es mas posible que sea lo que buscamos (EL SOFTICE nos sacaria de dudas (COMO YO SOY TRAMPOSO A MI YA ME LAS SACO) 401241 cmp eax, ebx 401243 je 40124c si son iguales salta a 40124c y evita la zona de CHICO MALO 401245 call 401362 40124a jmp 4011e6 40124c call 40134d (ZONA DE CHICO BUENO) O sea que compara dos valores , si son iguales evita el calll 401362 que nos llevaba a la zona de CHICO MALO y entonces sigue en 40124c donde seguro somos CHICOS BUENOS y nos va a registrar. Ya terminamos ya que no podemos usar el softice todavia lo vamos a crackear sin conocer el numero de serie. COMO SE HACE ESO Muy facil miren de vuelta el salto que esta en 401243 je 40124c Ese salto es un salto condicional que si salta nos registramos y si no salta no. Lo que hace que decida registrarnos o no es la comparacion que esta en la sentencia anterior. Lo que nosotros necesitamos es que siempre salte, independientemente de lo que compare y sea cual sea el numero que pusimos como NUMERO DE SERIE. Como se hace eso FACIL En vez de un salto condicional je usamos una sentencia que salte siempre que es la sentencia jmp O sea que tenemos que reemplazar je por jmp y saltaria siempre por encima del call que lleva a NOLUCK THERE MATE y nos registraria siempre sea cual fuere el numero que hayamos puesto. Esto no debe asustarlos la mayoria de los cracks reemplazan saltos condicionales por JMP no es nada del otro mundo COMO SE HACE vamos al WDASM y nos ponemos encima de la sentencia 401243 (CON GOTO CODE LOCATION) copiamos una cadena de numeros hexadecimales que comience en el mismo 401243 y seguimos copiando los numeros siguientes hasta hacer una cadena de 10 o 12 cifras. Por ejemplo 74 07 E8 18 01 00 00 EB 9A Vemos en la sentencia 40124a jmp 4011e6 que el primer numero hexadecimal que corresponde a la sentencia JMP es EB o sea que tenemos que reemplazar el 74 que es je por EB que es JMP. Cerramos el WDASM, (PASO NECESARIO PORQUE VAMOS A ABRIR EL ULTRA EDIT Y SI EL ARCHIVO ESTA EN USO NO NOS VA A DEJAR GRABAR, LO MISMO QUE SI EL CRACKME ESTA FUNCIONANDO CERREMOSLO ANTES) Abrimos el ULTRA EDIT y ponemos open file y abrimos el crackme, como el ULTRA EDIT ES UN EDITOR HEXADECIMAL nos va a mostrar todos los numeros hexadecimales del programa uno a continuacion del otro (SON LOS MISMOS NUMEROS QUE ESTABAN EN EL WDASM SOLO QUE AQUÍ NO APARECEN LAS SENTENCIAS DESENSAMBLADAS) Vamos a SEARCH - FIND y copiamos la cadena de numeros que deseamos buscar pero todos los numeros seguidos sin dejar espacio o sea 7407E818010000EB9A Nos va a aparecer marcado donde esta la cadena a cambiar y hacemos click en el 74 y escribimos EB, despues vamos a FILE y ponemos SAVE para que guarde los cambios.( SI NO LES DEJA GRABAR ES PORQUE ESTA ABIERTO EL WDASM O EL ARCHIVO CRACKME esta ejecutandose) Ahora ejecutamos de nuevo el archivo crackme y vamos a donde dice REGISTER y ponemos PEPE y 989898, si quieren pongan otro numero, pero el nombre debe ser de letras nada mas no numeros, ponemos ACEPTAR y CHACHAN