TORN@DO presents: cRACKER's n0TES

Sistemas de Protecci�n comerciales: Armadillo



Armadillo 1.73 - El archivo .TMP adicionado al esquema de protecci�n (alpine)
Ensayo Parte 1 (Quitando rutinas anti-debug)

En primer lugar, Armadillo proporciona 3 rutinas anti-debug que no son en absoluto excepcionales. La primera es nuestro bien conocido truco MeltICE (CreateFileA \ \. \SICE, NTICE y SIWDEBUG), inmediatamente seguido por un juego SEH y llamadas a INT 3. La ultima prueba de detecci�n s�lo trabaja en NT (API llama a IsDebuggerPresent).


Truco de MeltICE
Carga el prog dentro de Symbol Loader; bpx en CreateFileA; aprieta F5 3 veces; debes estar ahora en el primer archivo .tmp creado al azar; Inmediatamente sigue un cmp y un salto cond. ; cambia ese salto con. a un salto incond.; Despu�s es llamado GetLastError; con tal de que el valor de retorno de ese API sea 00000002 todo estar� bien. Camina m�s adelante y ver�s que la cosa entera es puesta en un loop (una vez para SICE,NTICE,SIWDEBUG); para el �ltimo (SIWDEBUG) el valor de retorno de GetLastError ser� 00000032 = ERROR_SHARING_VIOLATION, cambia ese valor a 00000002 y todo estar� bien.


IsDebuggerPresent
Despu�s del truco de MeltICE, ver�s que all� est� una llamada de API a GetProcAddress. Esta LLAMADA de API devuelve la direcci�n de IsDebuggerPresent que si est�s trabajando bajo WinNT entonces ser� 0.
Para usuarios de WinNT:
simplemente cambia el salto cond. que sigue a la LLAMADA de API.
Todos los otros:
No te preocupes por eso, y continua.


INT 3
Ahora puedes apretar F12 dos veces. Conseguir�s algunos Messageboxes que te cuentan material aburrido... finalmente aterrizar�s en una l�nea bajo una llamada [ebp-140].

A prop�sito esta LLAMADA era la LLAMADA al primer archivo TMP. Camina adelante y ver�s aparecer un INT 3. Una l�nea antes de la int3 (mov eax,00000004) teclea ' a' y ensambla la l�nea a ' jmp 0 '. Esto activar� una excepci�n y el programa pensar� que all� no hay instalado ning�n Debugger el cu�l manipule la excepci�n.




Ensayo Parte II (Removiendo Armadillo)
Si aprietas F5 ahora, ver�s el prog real, pero no lo hagas que porque quiero explicar c�mo Armadillo prepara el prog real. En primer lugar, �l crea un archivo, un archivo .tmp0, donde escribe dentro el c�digo real del prog. Algunos de vosotros pueden pensar ahora por qu� no esperar hasta que escribe el archivo, pone a Armadillo en un loop infinito y simplemente hacer una copia del archivo .tmp y ya est�. Heh yo pienso que es la �nica parte del c�digo donde los programadores de Armadillo pensaron lo que hacen. El hecho es, que ellos escriben el prog real entero en un archivo tmp, pero el tramo inicial s�lo contiene XXXXXX. As� que es in�til hacerlo as�.

Lo qu� Armadillo hace, es que crea ese proceso (API CreateProcess) con el flag suspendido activado, eso significa simplemente que carga el prog en la memoria y la ejecuci�n es detenida antes de la primera l�nea del c�digo. Ahora Armadillo hace una LLAMADA a WriteProcessMemory donde el XXXX es borrado con el c�digo real del tramo inicial. Ahora nosotros tenemos un prog completos en memoria, pero no podemos descargarlo c�modamente porque esta suspendido, debe haber una LLAMADA a ResumeThread para permitir correrlo.

Esto es llamado en una vuelta (WaitForDebugEvent, ContinueDebugEvent). Eso significa que depura el proceso creado. Yo pens� �por qu� debe depurar Armadillo el archivo .tmp? Respuesta: porque quiere saber cuando el usuario cierra, abandona el prog real, as� que Armadillo puede hacer alguna la cosa y tambi�n puede dejarla. As� �c�mo conseguimos nosotros un archivo trabajando sin Armadillo?

Heh que es bastante f�cil. Pon un bpx en ResumeThread antes del jmp 0. Entonces aprieta F5. SoftICE romper�; F12 para volver a Armadillo y teclear ' a'; ' jmp eip'
F5 entonces; abre ProcDump, selecciona el archivo .tmp fuera de la lista de tareas y haz una descarga completo. No hay nada m�s que hacer. Incluso no cambiando el punto de entrada.

�No es eso extra�o? Heh s�, claro dir�a yo.

 

The cRACKER's n0tES esta dividido dentro de 12 partes principales:
 TX. Notas del Traductor
 00. INDICE
 01. Ensamblador para Cracker (CoRN2)
 02. SoftICE (Men� de arranque , Configuraci�n, Comandos)
       
 1 Men� de arranque
       
 2 Configuraci�n
       
 3 Comandos
 03. Breakpoints & Detalles de API de Windows
       
 1 Programas restringidos
       
 2 Cajas de di�logo
       
 3 Verificando el Tipo de unidad
       
 4 Acceso a archivos
       
 5 Acceso al Registro
       
 6 Cogiendo n�meros de serie
       
 7 Accediendo a Tiempo & Fecha
       
 8 Generando ventanas
 04. Instrucciones de salto
 05. Instrucciones SET
 06. Tips & Trucos para Crackear
       
 1 Programas restringidos
       
 2 Dongles
       
 3 General
       
 4 Configuraci�n de InstallSHIELD
       
 5 Protecciones con Archivo llave
       
 6 Pantallas molestas
       
 7 L�mites de Runtime
       
 8 Serials
       
 9 Limites de Tiempo
       
10 Programas Visual BASIC
 07. Ventanas de Mensajes Para los Cracker
 08. Identificando funciones, Argumentos, y Variables (Rhayader)
 09. Los Sistemas de Protecciones de comerciales
       
 1 Armadillo
       
 2 C-Dilla SafeDISC
       
 3 SalesAgent
       
 4 SecuROM
       
 5 softSENTRY
       
 6 TimeLOCK
       
 7 VBox
 10. Bitmanipulation (Cruehead)
 11. Teor�a general de Cracking
 12. FAQ

 +A. C�mo contactar conmigo
 +B. �Que es lo Nuevo?


 



The cRACKER's n0TES are Copyright 1998-2000 by TORN@DO of ID.
Todo los Derechos Reservados.
Traducido por
Revisado por X-Grimator.