| 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. |
|