COMO CRACKEAR POR ESTADO+PORCINO |
CAPÍTULO VI. DESVIRGANDO EXPEDIENTES X -Como Crackear Contaplus Élite Pyme- |
Junio 1999
Indice |
INTRODUCCIÓN
AL ATAQUEEEEEEE PROTECCIONES ESPAÑOLAS PRIMERA APROXIMACION Y PRIMER ENFADO OBJETIVOS SEGUNDA APROXIMACIÓN Y SEGUNDA OSTIA. LAS COSAS SE COMPLICAN LA SOLUCIÓN A LA PELUA CUESTIÓN MODIFICACIÓN DE FICHEROS CREADOS EN TIEMPO DE EJECUCIÓN INTENTO SER UN TIO ELEGANTE, PERO NO ESTÚPIDO CAER EN LA CUENTA OPCION 3 CAÑERA VUELTA A LA PROTECCIÓN ESTÚPIDO VELO ¿ÉXITO? SOLUCIONES VIABLES HORROR Y ESPANTO EL MISTERIO INSONDABLE EL EXPEDIENTE X DESVIRGADO JUGUETEANDO PD PARA EL PROGRAMADOR |
INTRODUCCIÓN Victima:
CONTAPLUS ÉLITE PYME Llegó a mis manos una petición de crack. Normalmente la desestimo, a menos que la
pida un amigo, me interese o favorezca mi entorno de trabajo. |
AL ATAQUEEEEEEE Miremos
nuestro producto. Se trata de un clásico de la facturación española. Contaplus Pyme
Élite Otoño 98 del 1-11-98 |
PROTECCIONES ESPAÑOLAS A primera vista, el programa es español y por tanto la protección también. Conociendo los antecedentes de protecciones españolas, estimo que estará roto en 5 minutos. Sólo recuerdo una protección española cojonuda. Era de un catalán y se la había puesto a su programa de rompecabezas. Si sería buena que fue uno de los "coladores"para la +HCU con +ORC y +Fravia(a ver si se recupera pronto, leñe) |
PRIMERA APROXIMACION Y PRIMER
ENFADO Empezamos mal, intentamos instalar el contaplus y nos pide un
disquete llave. Joder, ¿no habían pasado al olvido esas protecciones basadas en discos
llave?. ¿Es que no aprenden?. Los discos llave fueron desechados porque |
OBJETIVOS
Estan claros, cepillarse al CONTAPLUS y obviar el disco llave. |
SEGUNDA APROXIMACIÓN Y SEGUNDA
OSTIA. LAS COSAS SE COMPLICAN Si intentamos instalar sin disco llave nos
aparece una estúpida ventana: |
LA SOLUCIÓN A LA PELUA CUESTIÓN Pos
si, seguro que ya lo habeis acertado :-) |
MODIFICACIÓN
DE FICHEROS CREADOS EN TIEMPO DE EJECUCIÓN Las variantes que se
me ocuren de menos a más elegantes son: |
INTENTO SER
UN TIO ELEGANTE, PERO NO ESTÚPIDO Pues eso, intento ser un tio
elegante y opto por la primera opción y descubro lo siguiente: |
CAER EN LA
CUENTA Concurrida audiencia, por si no os habeis dado cuenta, la
protección es muy buena. |
OPCION 3
CAÑERA Lo primero es pillar una copia chachi del ~GLC%04x.tmp pa
poder :004024F7 740A je 00402503 :004024F9 E87E060000 call 00402B7C :004024FE E9BD000000 jmp 004025C0 * Referenced by a (U)nconditional or (C)onditional Jump at Address: |:004024F7(C) | :00402503 8D85E8FEFFFF lea eax, dword ptr [ebp+FFFFFEE8] :00402509 50 push eax; Nombre churro de la librería ~GLC%04x.tmp * Reference To: KERNEL32.LoadLibraryA, Ord:0190h | :0040250A FF1534304000 Call dword ptr [00403034] Ahora hay que aplicar un poco de ingeniería inversa para transformar y que cargue siempre nuestra librería retocada. Os ahorro el proceso mental y obtenemos después de verificar que nunca se pasa por :004024F9 (con un bpx por ejemplo) :004024F7 8D85E8FEFFFF lea eax, dword ptr [ebp+FFFFFEE8];Dirección del nombre de la dll a cargar :004024FD C700432E6100 mov dword ptr [eax], 00612E43 ;Constante .a0 y aprovechamos la c inicial de [eax] nos queda c.a :00402503 8D85E8FEFFFF lea eax, dword ptr [ebp+FFFFFEE8];Guardamos las modificaciones. :00402509 50 push eax * Reference To: KERNEL32.LoadLibraryA, Ord:0190h | :0040250A FF1534304000 Call dword ptr [00403034] Con esto siempre se carga la librería "c.a". Así pues renombramos la ~GLC%04x.tmp que habiamos pescado antes como "c.a" . Ya sé, el nombre es un poco cutre, pero si no os gusta retocarlo vosotros. No se os olvide indicar que es de sólo lectura si no lo queréis perder. Si repetimos lo del bpx dialogboxparama aparecemos en el proceso C!text (nuestro fichero c.a). Vamos por el buen camino. To este rollo pa redirigir un puto fichero, la protección debe ser la ostia. Estoy ansioso :-) Resumiendo, buscamos en el instalar.exe 74 0A E8 7E 06 00 00 y lo encontramos en 0x18F7 y cambiamos por 8D 85 E8 FE FF FF C7 00 43 2E 61 00 |
VUELTA A LA
PROTECCIÓN Ya podemos mangonear tranquilos nuestro C.a. :10015244 FF24858E540110 jmp dword ptr [4*eax+1001548E] :1001524B FF550C call [ebp+0C] ;Llamada a la feisima glfxxxx.tmp :1001524E E93C010000 jmp 1001538F :10015253 FF75B4 push [ebp-4C] :10015256 FF550C call [ebp+0C] ;2º Llamada Os ahorro el trabajo y os comento como funciona el esquema de protección a este nivel. Se crean 2 dll en tiempo de ejecución en el mismo estilo que ya hemos comentado. Estas dll se encargan de todo el acceso al disco llave. Los parámetros a las dll se pasan (agarraos) en cadenas ascii. Basta con poner un bpx 1001524B y echar un vistazo a esi y edi. Obtendremos parámetros del tipo 3HayDisco 3Esdisco 3Instalaciones |
ESTÚPIDO
VELO Corramos un estúpido velo en esta parte de la protección,
porque es la más patética. :10015244 FF24858E540110 jmp dword ptr [4*eax+1001548E] :1001524B FF550C call [ebp+0C] :1001524E E93C010000 jmp 1001538F :10015253 FF75B4 push [ebp-4C] :10015256 FF550C call [ebp+0C] ;2º Llamada Por :1001524B 33 C0 xor eax,eax :1001524D 40 inc eax :1001524E E93C010000 jmp 1001538F :10015253 33 C0 xor eax,eax :10015255 33 C0 xor eax,eax :10015257 40 inc eax :10015257 90 nop Buscamos FF 24 85 8E 54 01 10 en c.a y lo encontramos en 0x1464B donde ponemos 33 C0 40 E9 3C 01 00 00 33 C0 33 C0 40 90 Con esto quedan fulminados los accesos a disco. Si seguimos adelante nos pide un número de serie que se puede obviar si parcheamos en :1001525E FF75B8 push [ebp-48] :10015261 FF75B4 push [ebp-4C] :10015264 FF550C call [ebp+0C]; eax=0 si todo va bien. :10015267 E923010000 jmp 1001538F por :1001525E 33C0 xor eax, eax :10015260 33C0 xor eax, eax :10015262 33C0 xor eax, eax :10015264 33C0 xor eax, eax :10015266 90 nop :10015267 E923010000 jmp 1001538F Si no parcheamos los push el programa casca. Resumiendo, buscamos en c.a ff 75 b8 ff 75 b4 ff 55 0C E9 23 01 00 00 y lo encontramos en 0x1465E, cambiándolo por 33 c0 33 c0 33 c0 33 c0 90 Cuando pida el serial podemos introducir cualquier churro numérico p.e: 111-1-696969-11 En el nombre de la empresa y nombre del usuario introducimos más de dos caracteres. Curiosamente todas estas rutinas GLC de acceso a disco y check del serial, aparecen como una dll normal spptr.dll en el directorio de instalación. Para qué, mu sencillo, para deinstalar y eliminar una licencia del disco llave. En teoría hay un número límite de instalaciones, cada vez que se instala el programa se elimina una licencia del disco llave y cada vez que se desistala se añade una. ¿ÉXITO? Si seguimos todos los pasos, la instalación finaliza correctamente . Ávidos lanzamos el programa y crash."Aplicación instalada incorrectamente". ¿En qué nos hemos equivocado?. Pensad un poco. |
SOLUCIONES
VIABLES Seguro que habéis llegado a la misma conclusión que yo. |
HORROR Y
ESPANTO Seleccionando la opción 1 nos encontramos en un avispero. |
EL MISTERIO
INSONDABLE Si descomprimimos el CONTAPLUS bien instalado en
nuestro disco duro nos llevamos |
EL EXPEDIENTE
X DESVIRGADO Lo más curioso de todo es que el programa funciona
con el ejecutable original, pero no con la copia. FileSize: 2FA780h DD 2F2726h DB C7h DB 7Fh DD 2F2727h DB A2h DB C1h DD 2F272Dh DB 9Dh DB 3Dh DD 2F272Eh DB 54h DB 79h Cambian 4 posiciones de memoria de un ejecutable a otro. Así pues una de las rutinas de acceso a disco que hemos desabilitado introduce en el ejecutable final la fecha de creación. Para más inri, esta fecha está encriptada y la llave de la desencriptación es BBYYMMAARRCCOOSS. Estos programadores nuncan aprenderán a ser humildes, los muy jodidos. Si cazamos las dll de disco que hemos anulado (copiar y pegar como ya vimos) y desensamblamos, observamos que se utiliza una bonita función: DosDateTimeToFileTime function converts MS-DOS date and time values to a 64-bit file time. BOOL DosDateTimeToFileTime( WORD wFatDate, // 16-bit MS-DOS date WORD wFatTime, // 16-bit MS-DOS time LPFILETIME lpFileTime // address of buffer for 64-bit file time ); Ponemos un bpx DosDateTimeToFileTime y lanzamos el contaplus. EUREKA, aparecemos en spptr.dll, un par de f12 más y volvemos a al ejecutable original. No os aburriré indicando como localizar la rutina de comprobación del flag (ya somos mayorcitos), doy directamente el parche: Cambiamos :10001545 8D542428 lea edx, dword ptr [esp+28] :10001549 51 push ecx ;BBYYMMAARRCCOOSS :1000154A 52 push edx Por :10001545 8D542428 lea edx, dword ptr [esp+28] :10001549 51 push ecx ;BBYYMMAARRCCOOSS :1000154A 51 push ecx ;BBYYMMAARRCCOOSS Buscamos en spptr.dll 8d 54 24 28 51 52 lo encontramos en 0x154A y lo cambiamos por 51 Listo y a disfrutar. Ya es hora de volver con la gorda y el peluo para tomar una cerveza. |
JUGUETEANDO
*Existe una forma alternativa de corregir el problema de aplicación mal
instalada. Si cogemos un dbf cualquiera del directorio /emp y lo copiamos con el nombre
menumode.dbf , entramos en la aplicación pero en versión demostrativa, sin copias de
seguridad y sin algunas opciones más. |
PD PARA EL
PROGRAMADOR Querido Marco: |
Notas para
los lectores. 1.- Los mensajes del tipo "Hazme el crack para
....", "Dime como se crackea....", "Dime donde puedo
encontrar..." son automáticamente ignorados. El objetivo de estos artículos es
enseñar a crackear no enseñar a ser unos llorones ineptos que sólo saben mendigar. Recordad bebed de la fuente, buscad a +ORC en la red. |
|