TORN@DO presents: cRACKER's n0TES

Sistemas de Protecci�n Comerciales: C-Dilla SafeDISC



Crackeando C-Dilla SafeDISC (ACiD BuRN)
Introducci�n

Hola a todos, ya s� que hay un tutor en Midtown MadNess por Black Check, pero la manera de crackearlo no es la misma que la que �l ha escogido, y yo explicar� m�s cosas que �l sobre pegar nuestras nuevas secciones "dumpeadas" en el crackeado EXE :) Yo tambi�n asumo que le�ste su tut, y sabes algunas cosas sobre el archivo de formato PE...

Herramientas requeridas

- El CD Original de Midtown Madness (una copia 1:1 y el crack de Laxity deber�as hacerlo tambi�n)
- SoftICE 3.23
- SoftICE Tool to patch SoftICE (usado para "dumpear" secciones)
-
ProcDump 1.5 (para PE Editor)
- HexWorkshop
-
Frogsice (para ocultar SoftICE)
- Exescope

Despu�s de instalar tu peque�o juego, edita los archivos PE " .ICD" con ProcDump. (Arrancas ProcDump, pulsa el bot�n en PE Editor, Examina tus archivos" .ICE", all� est� MIDTOWN.ICE). Ahora, debes ver:

- Entry Point : 00166C10 
- Image Base : 00400000 

Ok, nosotros necesitaremos el OEP (Punto de entrada original) despu�s, as� que para calcularlo simplemente a�ade la Image Base y el Entry Point introduciendo en ProcDump: 00400000 + 00166C10 = 566C10

Ahora, click en el Bot�n "sections", para ver todas las secciones del archivo,:
�S�lo necesitar�s tener los Offset Virtuales, y los valores de Raw Size y Raw Offset !

- para la secci�n ".text": 

Virtual Offset: 00001000 
Raw Size: 18D78F 
Raw Offset: 600 



- para la secci�n ".Rdata": 

Virtual Offset: 0018F000 
Raw Size: 14C99 
Raw Offset: 18DE00 



- para la secci�n ".data": 

Virtual Offset: 001A4000 
Raw Size: 3D8A4 
Raw Offset: 1A2C00 



- para la secci�n ".data1": 

Virtual Offset: 00314000 
Raw Size: 20 
Raw Offset: 1E0600 



- para la secci�n ".rsrc": 

Virtual Offset: 00315000 
Raw Size: CB3 
Raw Offset: 1E0800

Ahora "dumpearemos" todas las secciones del archivo" .ICD", exceptuando el" .Rdata" (sabr�s despu�s por qu�....). A prop�sito, necesitas agregar la Image Base al virtual Offset de todas las secciones:

     .text  : 400000 + 00001000 = 00401000  
     .rdata : 400000 + 0018F000 = 0058F000  
     .data  : 400000 + 001A4000 = 005A4000  
     .data1 : 400000 + 00314000 = 00714000  
     .rsrc  : 400000 + 00315000 = 00715000  
  

Ok, ahora dumpearemos todas estas secciones (excepto el .rdata). Para esto, necesitaremos poner un breakpoint en el EOP (566C10 para nosotros). A prop�sito, asumo que le�ste el tutor de Black Check, y que parcheaste tu FrogsICE para esconder a SoftICE (nota de TORN@DO: o usa el �ltimo FrogsICE), si no ve y lee el simp�tico tut antes...

Arranca tu (parcheado) FrogsICE, y corre tu juego original. Ver�s un peque�o v�deo, en este momento, cambia a SoftICE (Ctrl+D), y pon un BPX en el OEP. BPX 56CC10 para este juego!

Aprieta F5 para permitir al juego continuar corriendo y ci�rralo despu�s. Ahora, ejec�talo, y normalmente rompe en 56CC10. Si no lo hace, mira si pusiste el BPX en buen lugar (bl: debes conseguir algo as�: #025F:56CC10). Asumo que rompi�, ahora "dumpea" todas las secciones. Antes de "dumpear" sin embargo, desactiva todos tu BPX, ya que nosotros no queremos mierda en nuestras secciones "dumpeadas"...(n.del t.: traducido literalmente :-�)

El comando pagein trabaja as�:

pagein "direcci�n para comenzar el dumpeado" "tama�o" "nombre de archivo"


As� que, simplemente escribe lo siguiente en SoftICE:

pagein 401000 18D78F c:\text.bin 
pagein 5A4000 3D8A4 c:\data.bin 
pagein 714000 20 c:\data1.bin 
pagein 715000 CB3 c:\rsrc.bin 

�Ok, esto "dumpe�" las secciones a nuestro disco duro! �Ahora, tenemos que hacer la parte "delicada", que es "dumpear" nuestras secciones rdata por supuesto, pero no es como las otras!

En primer lugar, tienes que conseguir la direcci�n real de la funci�n, as� que remontaremos dentro de la LLAMADA a nuestra secci�n rdata.

Despu�s de romper, aterrizamos aqu�:

00566C10 PUSH EBP <-- Rompemos aqu�, en el punto de entrada 
00566C11 MOV EBP,ESP 
00566C13 PUSH FF 
00566C15 PUSH 005968D0 
00566C1A PUSH 00566724 
00566C1F MOV EAX,FS:[00000000] 
00566C25 PUSH EAX 
00566C26 MOV FS:[00000000],ESP 
00566C2D ADD ESP, 5C 
00566C30 PUSH EBX 00566C31 PUSH ESI 
00566C32 PUSH EDI 
00566C33 MOV [EBP-18],ESP 
00566C36 CALL [0058F14C] <-- Esta es la llamada en nuestra secci�n rdata, 
trac�ala (F8) 

En esta LLAMADA, aterrizamos aqu�:

009A6485 pushad 
009A6486 push 00000031 
009A6488 push 00000000 ---> esto es 0 para kernels y 1 para users ... 
009A6490 call [9A64A6] ---> consigue la direcci�n real de la funci�n 
(9A64A6) 
009A6496 add esp, 8 
009A6499 popad 
....... jmp [XXXXXXXX] 

Rastrea este c�digo, y veras al jmp [XXXXXXXX] convertirse en el jmp [KERNEL32!GetVersion]...
Ok, est� bien, est�s en el buen camino;). �Estamos cerca de donde empieza a codificar el fijador de la LLAMADA!

�Sin embargo, nosotros necesitamos saber cu�ntas importaciones de Kernels y users hay en este juego! Para hacer esto, hay varias maneras, puedes desensamblar el" .icd" con W32DASM y puedes contarlos, tambi�n puedes remontar en SoftICE, o usar la herramienta (como yo hice) EXESCOPE para ver cu�ntas importaciones tiene...

En mi midtown.icd, yo tengo:

          - 127 kernels import  
          - 042 users import  
  

Ok, pero necesitamos tener estos n�meros en hexadecimal, porque SoftICE usa solo valores hexa =)

   
 127 = 7Fh  
  42 = 2Ah  

Mi parte favorita comienza ahora: Codificando el fijador de la LLAMADA. En primer lugar, no tenemos acceso de escritura (acceso solo lectura) para la secci�n Rdata, as� que moveremos la secci�n rdata al lugar de la secci�n data...

Para codificar el fijador de la LLAMADA, yo empiezo a codificar en el emplazamiento de EOP, as� que habilita tu BPX en �l y ejecuta el juego de nuevo. Espera hasta que rompamos... ahora tenemos que mover la secci�n rdata al lugar de la secci�n data, en memoria.

Para hacer esto, simplemente escribe:

m "virtual offset de secci�n data + image base" l "tama�o rdata"M "data virtual offset"
NOTA: Para el data virtual offset, usa un numero grande, es mejor ...
5A4000 es nuestro normal virtual offset, Yo he usado 5B0000 (mayor, como te dije)

As� que simplemente escribe esto:

m 58F000 l 14C99 5B0000

Ok, ahora es tiempo de codificar. Est�s en la l�nea:

566C10 PUSH EBP

Nosotros codificaremos algo parecido a esto:

	00 pushad  
          01 push ebx  
          02 push 0  
          04 call [XXXXXXXX]  
          0A add esp,8  
          0D mov edx, XXXXXX   
          12 cmp eax,[edx]   
          14 je 20  
          16 inc edx  
          17 cmp edx, XXXXXX + XXXXX  
          1D jne 12  
          1F int 03         
          20 mov [edx],ecx  
          22 popad  
          23 inc ebx  
          24 cmp ebx, XX    
          2A jne 00  
          2C int 03  
            
  
   Escribe en SoftICE: A <enter>  
   
 y codifica:  
   
  
566C10   pushad  
566C11   push ebx  
566C12   push 0  
566C14   call [009A64A6]   <--la direcci�n real, encontramos esto cuando 
566C1A      add esp,8    	       <--remontado en la llamada 
566C1D      mov edx, 5B0000      <--la direcci�n donde nosotros copiamos nuestro .rdata 
566C22       cmp eax,[edx] <--la secci�n en 
566C24       je 566C40 
566C26       inc edx 
566C27       cmp edx, 5B0000 + 14C99 <--la direcci�n donde copiamos nuestros 
566C3D      jne 566C22 <--.rdata in + tama�o rdata 
566C3F       int 03 <--seguramente, si no encontrara ninguna equivalencia, rompe aqu�. 
566C40      mov [edx],ecx 
566C42      popad 
566C43      inc ebx 
566C44      cmp ebx, 7F <--el n�mero de api para preparar
566C4A     jne 566C10 
566C4C     int 03 

Ahora pon EBX a 0 (R ebx 0) , pon tu EIP en la l�nea 0 (l�nea 0 = 566C10 aqu� , as� R EIP 566C10) escribe "i3here on" y presiona F5 para correrlo. Normalmente debes romper en 566C4C ... Ahora vuelve EBX a 0, cambia la l�nea 02 (56CC12 aqu�) a "push 1" y cambia la l�nea 24 a 'cmp ebx, user_import_number' (2A para nosotros) y vuelve EIP a la l�nea 0 (R EIP 566C10). C�rrelo de nuevo. Normalmente, todo est� ok ahora, deber�a romper en 566C4C de nuevo. Ahora, podemos "dumpear" nuestra secci�n rdata con seguridad:

pagein 5B0000 14C99 c:\\rdata.bin


Tenemos simplemente que reconstruir un archivo ejecutable. Yo prob� ProcDump para importar secciones, pero esta zorra no cambi� nada (nota de TORN@DO: prueba el nuevo ProcDump... Lucifer48 hizo algo grande), as� que yo he importado mis secciones a mano. Te mostrar� como lo hice ;)
En primer lugar, haz una copia del archivo" .icd", para nosotros: MIDTOWN.ICD, y ren�mbralo con el nombre que quieras, pero con la extensi�n" .EXE". P.ej. damnit.exe

Ahora, arranca HexWorkshop, abre el EXE, y abre la 1� secci�n que hemos "dumpeado"... era: c:\text.bin
Ahora, necesitas el Raw offset de cada secci�n, yo lo he apuntado en la primera parte del tut. Los recordar� aqu�, para ayudarte en la comprensi�n de esta mierda :p,

  para la secci�n ".text": Raw Offset:    600      Tama�o : 18D78F  
  para la secci�n ".Rdata": Raw Offset: 18DE00      Tama�o:   14C99  
  para la secci�n ".data": Raw Offset: 1A2C00      Tama�o:   3D8A4  
  para la secci�n ".data1": Raw Offset: 1E0600      Tama�o:      20  
  para la secci�n ".rsrc": Raw Offset: 1E0800      Tama�o:     CB3  
  

�Ok, conseguiste todas las mierdas aqu�! Nosotros queremos hacer la 1� secci�n" .text" as�:


En HexWorkshop, aprieta Alt + F5, introduce el Raw offset de la secci�n que quieres pegar (aqu�: 600), y click en OK.

Ahora selecciona el men� edit, y click en "Select block" introduce el tama�o de la secci�n (aqu�: 18D78F).
Ahora mira el otro archivo abierto
(text.bin), y aprieta ' Ctrl + A' para seleccionar todos. Rem�ntate a la ventana ejecutable principal en HexWorkshop y simplemente pega los bytes que has copiado en el portapapeles con ' Ctrl + V'
(o men� edit, y paste).

�Guarda tu archivo! BIEN... simplemente has actualizado la secci�n ' .text ' con nuestra secci�n "dumpeada" ;)



�OK, hago otra importaci�n de secci�n contigo, y tu har�s las otras usando la misma manera!


2� secci�n : Rdata!


Puedes cerrar la ventana 'text.bin', y abrir con HexWorkshop el archivo 'rdata.bin'. Click en la ventana principal exe, presiona 'Alt + F5', introduce el tama�o del Raw Offset de la secci�n rdata (18DE00). Click en OK, selecciona desde el men� Edit "Select block", introduce el tama�o de la secci�n rdata (14C99). Mira la ventana de rdata.bin, presiona 'Ctrl + A' para seleccionar todos los bytes, y vuelve a la ventana del ejecutable principal (damnit.exe) en HexWorkshop. Ahora solo copiar & pegar estos con 'Ctrl + C'.


Ok, pienso que has entendido eso ahora. Simplemente haz el mismo con todas las secciones y entonces guarda tu ejecutable. Ahora puedes descargar FrogsICE, porque los anti-SoftICE no estar�n m�s en nuestro exe reconstruido. Quita el cd original de midtown madness, y corre 'damnit.exe' o 'cualquieraquequieras.exe'.

�GUAU!, el juego funciona - muy r�pidamente - sin esa est�pida ventana, dici�ndonos que esper�semos durante la Comprobaci�n del CD... y voila el juego funciona muy bien =)

Pero para hacer un ejecutable perfecto, tienes que reconstruir el PE del archivo como es mencionado en el tutorial de Black Checks:

Si intentas ejecutarlo en otra Versi�n de Windows 9x. Caer�. S�lo funcionar� en Win98, porque la secci�n rdata incluye la direcci�n de todas las funciones de win98 (s�lo puede estar en win95 si lo crackeaste en win95).
Las direcciones que nosotros pusimos en la tabla de importaci�n son s�lo v�lidas para la versi�n de Windows en la que nosotros lo crackeamos. Arreglemos eso:

- Arranca Procdump (un trabajo muy bueno de G-ROM :)
ve a Options y selecciona:

[v] Recompute Object Size
[v] Optmize PE Structure

[X] Use actual import infos
Entonces pulsa en el bot�n de OK...


Ahora nosotros tenemos que reconstruir el archivo, pulsamos el bot�n en Rebuild PE y examinamos a tu archivo crackeado (damnit.exe). �Procdump produce para nosotros una tabla de importaci�n v�lida y nuestro ejecutable ahora est� arreglado - y perfecto!
(As� lo espero ;p) debe correr en todas las versiones win9x...



Crackeando C-Dilla SafeDISC (Black Check)


"La tecnolog�a de SAFEDISC est� comprendida en tres caracter�sticas clave:

(1) una firma digital autentificada
(2) encriptrado que protege el contenido y
(3) software anti-hacking.

Durante el premastering, el contenido es encriptado y lleva con �l las instrucciones de autentificaci�n. Una �nica firma digital SAFEDISC es agregada al t�tulo durante el mastering como consecuencia. Cuando un usuario ejecuta un disco original, el software de autentificaci�n lee la firma digital que permite al programa ser descifrado y actuar normalmente. SAFEDISC tambi�n incluye tecnolog�a anti-hacking que previene el compromiso de sus caracter�sticas de seguridad. La tecnolog�a anti-hacking est� dise�ada no s�lo para detener el copiando casual, sino tambi�n para proporcionar fuerte resistencia a hackers DESTRUCTIVOS y a piratas comerciales."

Del
homepage de SafeDISC:

Hhmm ... seamos DESTRUCTIVOS.


Introducci�n
Como probablemente sabes Safedisc es otra protecci�n comercial de C-Dilla. Los CDs protegidos siempre tienen los archivos CLOKSPL.EXE y DPLAYERX.DLL en el directorio ra�z. Nuestro objetivo es Midtown Madness [alem�n]. Hay un Crack Gen�rico por Pedro [Laxity], pero a m� no me gusta insertar CDs en mi unidad s�lo para jugar a un juego: -)

Los ejecutables consisten en dos partes. Uno es simplemente el loader (MIDTOWN.EXE) y despu�s siempre hay un archivo * .ICD que contiene el EXE original encriptado. Cuando el juego es ejecutado que el cargador se descifra a si mismo y al juego EXE usando una clave que esta en el CD. Lo que nosotros tenemos que "dumpear" el EXE descifrado al disco y arreglarlo.


Herramientas requeridas:
  - El CD Original de Midtown Madness  (una copia 1:1 y el crack de 
    Laxity deber�as tenerlo tambi�n)  
  - SoftICE for W9x  
  - ProcDump 1.4  
  - ADump  
  - Frogsice 0.14  
  - W32Dasm  
  - Conocimiento del formato PE  
  - Algo de tiempo, nervio y un cerebro  
   

Ensayo

1. Eliminando el c�digo Anti Softice
SafeDISC usa dos m�todos bien conocidos de detecci�n del SICE. El primero es conocido como ' MeltICE' y ha sido descargado por David Eriksson. simplemente llama a CreateFileA con los Drivers de SICE

" \\ \\. \\SICE"
" \\ \\. \\SIWVID"
" \\ \\. \\NTICE" (no importante en este caso)

Primero yo pas� esto con un Macro de SoftICE:

macro NOSICE ="d @(esp+4);e @(esp+4) 0;x;"

entonces

BPX CreateFileA if *(esp->4+4)=='SICE' || *(esp->4+4)=='SIWV' do "nosice"


Esto funciona bien, pero tambi�n es lento. �Esta mierda es llamada aproximadamente un centenar de veces! Otra desventaja es que no puedes poner breakpoints en CreateFileA m�s. Si alguien sabe algo mejor por favor m�ndame un e-mail.

La soluci�n es mucho m�s simple. Simplemente abre MIDTOWN.EXE y busca ' ss' (ASCII) encontrar�s algo as�:

  
  \.ss  
  \.ss  
  \.ss  
   

S�lo cambia ' ss' a ' xx' o cualquier cosa. Tienes que hacer esto con ' DPLAYERX.DLL', tambi�n. Los controles de CreateFile est�n fuera ahora, pero si ejecutas el juego con SoftICE cargado simplemente choca. Parece como que haya otro chequeo. Yo jugu� alrededor de BPINT 2F, 41 etc. pero nada. El usa la INT 68:

      425205:  xor eax, eax  
      425207:  mov ax, 4300  
      42520B:  int 68  
      42520D:  mov [ebp-9c], eax  
      425213:  cmp eax, 4300  
      425218:  jz blablabla...  
        

No intentes remendar esto. Hay una herramienta por ah� llamada FrogsICE. Una vez lo cargas consigues una pantalla azul cada vez que descubre INTs Anti SoftICE. FrogsICE tiene una opci�n para enga�ar al programa pero esto no funcionar� porque INT 68 devuelve 0x4300 en eax cuando SoftICE no est� cargado. FrogsICE devuelve 0x0000, as� que nosotros tendremos que parchear FrogsICE:

- abre FROGSICE.VXD
- busca 60 80 7D 1D 43
- cambia el primer byte a C3 (ret)

FrogsICE manejar� ahora correctamente todas las Llamadas a INT 68 sin hacer estallar a todo el fastidiosa. tiempo: -) Bien el juego funciona bien ahora con SoftICE cargado. Sigamos a la parte fastidiosa.



2. Reconstruyendo el Ejecutable Encriptado
El EXE encriptado contiene objetos lo siguientes:

 Obj.01: .text    RVA: 00001000 Offset: 00000400 Tama�o: 0018D800 Flags: 60000020  
 Obj.02: .rdata   RVA: 0018F000 Offset: 0018DC00 Tama�o: 00014E00 Flags: 40000040  
 Obj.03: .data    RVA: 001A4000 Offset: 001A2A00 Tama�o: 00030000 Flags: C0000040  
 Obj.04: .data1   RVA: 00314000 Offset: 001D2A00 Tama�o: 00000200 Flags: C0000040  
 Obj.05: .rsrc    RVA: 00315000 Offset: 001D2C00 Tama�o: 00000E00 Flags: 40000040  
 
 .text -> encriptado  
 .rdata -> contiene Datos de Importaci�n. Inoperante ya que s�lo apunta a las rutinas
 de SafeDISC  
 .data -> encriptado  
 .data1 -> encriptado  
 .rsrc -> no encriptado (muy honrado... )  
    

2.1 "Dumpeando" la secci�n .text
�IMPORTANTE! Es seguro reemplazar esa maldici�n del archivo de Microsoft AVI, lo ver�s algunas veces... : -)

Ejecuta el juego. No te olvides de cargar FrogsICE y esperar hasta que consigas el men� principal. Ahora minim�zalo y ejecuta ProcDump. "Dumpea" el proceso entero (MIDTOWN.ICD) con opciones standard. Edita en tu Hex lo que has "dumpeado" y copia la secci�n .text a otro archivo. Si no sabes hacer esto, deja de leer y consigue alguna informaci�n sobre el formato de Archivo PE (o piensa un poco). Puedes conseguir la Informaci�n del Objeto desensamblando MIDTOWN.ICD desde la cabecera de PE que no est� encriptado.

Nota que los Raw Offsets de las secciones no son los mismos que en el "dumpeado". Ellos son movidos cerca de 0x200 bytes. ���En nuestro dumpeado de MIDTOWN.ICD la secci�n .code empieza en 0x600 NO en 0x400!!!


2.2 "Dumpeando" la secci�n .data
Como puedes suponer las secciones .data se modifican cuando se ejecuta el juego. As� que nosotros las necesitamos en un estado 'intacto'.

Pon un BPX en el punto de Entrada del Programa MIDTOWN.ICD
(�no MIDTOWN.EXE!)
. Puedes sacarlo de la Cabecera de PE, o con W32Dasm. Tienes que estar seguro que est�s en MIDTOWN.ICD al ponerlo.

Aprieta Ctrl-D mientras se ejecuta el AVI. Aseg�rate que el "process string" abajo a la derecha es MIDTOWN. Ahora pon tu BPX (566C10). Ejecuta el juego de nuevo y esperas hasta SoftICE rompa. Ahora det�n el Programa ensamblando ' EB FE' para el EIP actual. Debe parecerse a:


566C10: EB FE jmp 566c10

Ahora aprieta F5 y "dumpea" el proceso entero de nuevo con opciones de standard. Copia las secciones .data y .data1 a otro archivo. Recuerda los 0x200 bytes. Ahora puedes cancelar la tarea con ProcDump.

Ahora haz una copia de MIDTOWN.ICD y ll�malo CUALQUIERAQUEQUIERAS.EXE
Pega tus secciones "dumpeadas". �Sobre qu� de la secci�n .rdata est�s preguntando? Sigue leyendo y llora...



3. Una puta, llamada .rdata
La secci�n .rdata una vez contuvo las direcciones de las DLL importadas usadas por MIDTOWN.EXE. Pero cuando SafeDISC lo desarregl�, lo cambi� para apuntar a las rutinas de SafeDISC que LLAMAN a las funciones de DLL. Estas rutinas de SafeDISC est�n en DPLAYERX.DLL y dependen de la Firma del CD correcta. Puesto que esta mierda no est� cargada en nuestro EXE reconstruido este simplemente choca cuando intenta llamar un DLL.

Ejecuta el EXE protegido de nuevo. Habilita tu punto de ruptura en el punto de la entrada y camina en la primera LLAMADA de API.

CALL[58F14C]  
     
   Ahora no est�s en GetVersion sino en la rutina de SafeDISC:  
   
  
   .  
   .  
   pushad  
   push 00000031		  --> el n�mero de la funci�n importada  
                            --> si este valor es demasiado grande la llamada choca.  
   push 00000000               --> el n�mero de dll importadas  
   call [9b6146]               --> consigue la direcci�n real de la funci�n  
   add esp, 8  
   popad  
   jmp[09b6140]                --> y salta all�  
   .  
   .  
   .  
       

Este c�digo empuja los n�meros de la funci�n y DLL y entonces Llama una rutina que devuelve la direcci�n real en ECX y la referencia err�nea en la secci�n .rdata en EAX. "Debuggea" un poco hasta que lo entiendas. Entonces regresa.


Como deduje s�lo las dos primeras DLLs se manipulan por aqu� (KERNEL & USER). Los datos de importaci�n para las otras son ok. Ahora tienes que averiguar cu�ntas funciones importadas hay. Puedes contarlos en W32Dasm (por favor s� astuto).

Hay 0x106 importaciones de KERNEL32.DLL. El n�mero de importaciones de USER32.DLL no importa porque podemos permitir que el programa choque despu�s.

Ahora la carga Adump. Con el comando 'r' consigues la direcci�n donde puedes empezar a "dumpear". Para m� esto es 82ABD000. Ahora arranca el EXE y det�n en la funci�n de SafeDISC. Copia la secci�n .rdata a Adump Start Address + 1000:

-m 58f000 l 14e00 82abe000

Pon tu EIP a 82ABD000 y ensambla en SoftICE esto:

 
   -a 82abd000  
     
   @1:   push ebx           ----> Pone manualmente EBX a 0!!!!!!  
         push 00000000      ----> el n�mero de DLL - tienes que cambiar esto despu�s!  
         call [9b6146]      ----> consigue valores dentro de EAX y ECX  
         mov  edx, 58f000   ----> esto es la direcci�n de la secci�n .rdata  
     
   @2:   cmp dword ptr[edx], eax  ; busca la entrada  
         je @3  
         inc edx  
         cmp edx, 5a3dfd    -----> |    14e00h       + 58f00h        - 3 |  
                                   | tama�o de .rdata  + offset rdata  - 3 |  
         je  @4  
         jmp @2  
   @3:   edx sub, 58f000    -----> la direcc. de rdata.  
         add edx, 82abe000  -----> Adump Start Address +1000h  
         mov [edx], ecx            ; pone la Direcci�n real en nuestro nuevo .rdata  
   @4:   inc ebx  
         cmp ebx, 106       -----> el n�mero de exportaciones de KERNEL32  
         jnz @1  
   @5:   jmp @5             -----> para aqu�  
     

Explicaci�n
Esto LLAMARA a la rutina de SafeDISC con cada n�mero de la funci�n como un par�metro. La Direcci�n correcta es devuelta en ECX. El �ndice err�neo en la secci�n de .rdata est� en EAX. Ahora �l, simplemente busca el .rdata en Memoria para la referencia incorrecta y pone el valor real de ECX al bloque de .rdata que nosotros copiamos a la Memoria de Adump.

Los valores arriba expresado son correctos para mi versi�n de Midtown Madness. Si est�s trabajando en otro juego debes calcularlos t�.


Ahora permite a nuestro peque�o prodigio correr. Espera un poco. Si lo hiciste todo correcto nada debe chocar. Retrocede en SoftICE. El cursor debe estar en @5.

Ahora pon EBX atr�s a 0. Pon EIP atr�s a @1. Y cambia el PUSH 00000000 a PUSH 00000001. Ejecuta de nuevo. El programa chocar�n porque empujamos un valor demasiado grande en EBX. Esto es ok.
Tenemos lo que nosotros dese�bamos >:)

Ahora retrocede a Adump y escribe nuestra secci�n .rdata al disco. P�galo en nuestro EXE reconstruido. �Comi�nzalo y besa tu pantalla! �FUNCIONA!!!!!!



4. Haci�ndolo un poco m�s compatible
Bien nuestro EXE reconstruido corre bien. Pero todav�a no es perfecto. Simplemente prueba a ejecutarlo en otra versi�n Windows 9x. Chocar�. �Por qu�? Las direcciones que nosotros pusimos en la tabla de importaci�n son s�lo v�lidas para la versi�n de Windoze en que nosotros lo ejecutamos. Normalmente el OS pone estos valores all� cuando el EXE es cargado. Puesto que nosotros los pusimos all� a mano otro Win9x chocar�n. Arreglemos eso:


- arranca ProcDump (�realmente lo adoro!)
- Ve a Options
- selecciona:

[v] Recompute Object Size
[v] Optmize PE Structure
[ ] Use actual import infos

- click en Rebuild PE
- elige nuestro EXE reconstruido

ProcDump ahora generar� una tabla de importaci�n v�lida. Nuestro reconstruido es perfecto ahora. �Expulsa el horrible CD original y disfruta c�mo de r�pido empieza el juego:))!

�Ah!

Puedes borrar sin peligro �sta mierda de archivos ' Safe'DISC :

00000000407.0016
00000000407.256
CLOCKSPL.EXE (un icono muy lindo)
DPLAYERX.DLL
old MIDTOWN.EXE
MIDTOWN.ICD

86 MB menos de mierda en tu unidad:)



Este tutorial est� dedicado a Sir Gambi (ich warte auf dich, du Arsch!)



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.