ESTUDIO COLECTIVO DE DESPROTECCIONES
WKT Tutorialz Site
KUT
Programa ToggleMouse 3.4.3 W95 / W98 / NT
Descripci≤n Programa que genera utilidades para el mouse.
Tipo Trial de 45 dias
Url http://www.togglesoftware.com
Protecci≤n Nag Screen. Time Limit 45 Dias, Serial.
Dificultad 1) Principiante, 2) Amateur, 3) Aficionado, 4) Profesional, 5) Especialista
Herramientas W32dasm v8.9, UltraEdit v6.10a, Registry Monitor
Objetivo Simular estar registrados.
Cracker Maniac PC
Fecha 25 de Agosto de 1999

Introducci≤n
Este tutorial estß creado por que realmente no me sentφ muy satisfecho con los otros cursos que hice, realmente pienso .. no quedaron de mi agrado asφ que los eliminΘ y los reemplacΘ con estos,asφ que el que qued≤ leyendo mi otro curso, despφdanse, empezaremos desde 0 ... este tutorial estß hecho especialmente para los que no entienden lo que es la Ingenierφa Inversa, desde ahora le llamaremos cracking espero poder ayudarlos en todo lo que pueda, y si no, harΘ lo mejor ... 

La ingenierφa inversa se basa en quitar, remover, suspender uno o mßs temas de protecci≤n de alguna aplicaci≤n ya siendo comercial y otras. Muchos consideran esto como un arte. En este curso pienso ayudar a personas quΘn interesadas al respecto, y incluso a los mismos programadores. Se les ense±arß a no ser tan 'cuadrados' de mente pensando en intereses comerciales, se les ense±arß a crackear sus propios programas, e ir aumentando sus niveles de protecci≤n, en este primer curso aprenderemos algo mφnimo en cuanto a reventar protecciones de programas, mas que nada, hablaremos de te≤rico. 

Por hoy se aprenderß el uso de la ingenierφa inversa bajo el sistema operativo en Windows 95 y/o 98. Empezaremos por cosas muy bßsicas. S≤lo les pedirΘ las siguientes cosas para que comienzen a crackear : 

  • Un Computador -=(Mayor o igual a 16 Mb. de RAM, mayor de 486 a 33)
  • Un disco duro de 1 Gb.
  • UN CEREBRO
  • Instinto y perspicacia. 
  • Las ganas.
  • Algo de conocimientos bßsicos a medios (Como que es la RAM, programar, uso de Win95)
  • Si es posible, algo de conocimientos de ensamblador, si es que no es asφ, los ayudarΘ en lo que pueda.
  • Paciencia!
  • Yo creo que tienes los dos primero φtems, ya que ahora solo salen pentiums III y pocaso los II... Al mismo tiempo aprenderemos a crackear a conocer los aspectos de una PC, c≤mo funciona, quΘ hace, y como es que se ejecutan las cosas. Creo que debo explicarles otras cosas tambiΘn pero las aprenderemos en el transcurso de estos laaargoos capφtulos. 

    Konceptos
    Empezaremos por pensar en quΘ es un sistema operativo, es la base por la cußl un programa (en este caso Windows 9x) domina el inicio de las rutinas para procesar datos en el disco duro. (suena enredado, pero piensa que se trata de un programa que hace que se 'inicie' el disco duro ..) .. ya sabemos cußl programa estß dominando en tu equipo, si es que usas una apple macintosh, busca en altavista 'MAC CRACK', y encontrarßs hechos al respecto. Muy bien, imaginemos un programa a crackear, o sea, ┐QuΘ queremos hacerle al crackearlo? .. vamos a eliminar dißlogos o partes que digan .. 'C≤mprame' .. 'gasta dinero' ... por un programa que usas, y por ejemplo,un programa que usas te pide que lo compres utilizando una tarjeta de crΘdito (p.e. MasterCard*Visa), y que lo compres por ejemplo en http://www.buynow.com , del cußl te pedirß el nombre, n·mero de tarjeta de crΘdito y cuando expira, asφ harßn una cybercompra arrugando tus bolsillos ... ┐No? ... si no te ha pasado revisa entre tus cosas esos CD's de revistas .. verßs mucho material para crackear allφ, todavφa no sabes crackear, asφ que aprenderemos aquφ. Imagina que este programa tiene un cuadro de dißlogo que te pide un nombre y una contrase±a, y esta contrase±a se te da cuando compras el programa. y cuando la introduces en el programa, el programa te dirß "Gracias por registrarse" lo que prßcticamente quiere decir que : "Gracias por gastar su dinero en este programa" .. nuestro objetivo para este y solamente este programa serß estudiar el porque cuando introduces una contrase±a err≤nea te dice "Contrase±a incorrecta" ... y modificar esta sentencia o ver como es que forma la contrase±a ... llamaremos desde ahora a MS-DOS ->DOS, a Windows 95 le llamaremos ->Win95. ┐Por quΘ digo solamente para este programa? .. pues existen varias protecciones distintas, como las de tiempo (cußnto tiempo usas un programa) .. las de usos (Cußnto puedes usar un programa, p.e. 6 veces)... y otras por allφ ... 

    Cada vez los programadores estßn desarrollando peores protecciones para los programas... y a veces son buenas... (no demasiado y pocas veces).. esto ocurre cuando los programadores crean los programas en pensamientos comerciales y 'monetarios' .. y lo peor de todo es cuando esto sucede gracias a la est·pida sociedad en que vivimos donde la gente esta propensa a que cuando se tiene dinero, no se hacen las cosas por placer. se hacen con mentes comerciales. 

    Este curso es totalmente susceptible a cambios

    ┐Por donde rayos Komenzar?
    Empezaremos por saber que rayos necesitaremos para esto de la ingenierφa inversa. Pueden ser encontrados en HERRAMIENTAS 

    Depurador/Debugger: Es un programa que sirve para "depurar" programas, me explico, cuando se ejecuta un programa y lo 'depuras' .. Te vas deteniendo en cada paso que ejecuta el programa, al mismo tiempo cuando lo depuras por ejemplo en el programa llamado "soft-ice", este es un programa para depurar (el mßs famoso) vas viendo el programa depurßndose en ensamblador o mas bien conocido como assembler, explicarΘ assembler bßsico mßs adelante ...  

    Lista de depuradores mas comunes : Debug (De MS-Dos), Soft-Ice (El mßs usado), TR (para dos y Win) 

    Editor Hexadecimal: Es un programa que permite 'editar' archivos, en forma hexadecimal y poder cambiar bytes en Θl, mas adelante aprenderemos el sistema hexadecimal y binario. 

    Lista de editores hexadecimales mßs comunes : Hex Workshop (Win95), Ultraedit (Win95), Hacker's View (Dos) 

    Monitor del registro:Para ocasiones en que los programas guarden sus datos de registro en el sistema de Windows, siempre servirß este programa .. mßs adelante se explicarß acerca de este famoso registro de 'windows'.. 

    Lista de monitor : Registry monitor (Win95). 

    Descompresor: Algunos programas. Mßs en sφ sus ejecutables, vienen comprimidos con ejecutables de otras compa±φas , por ejemplo el famoso IconForge, este programa no permite ser desensamblado... Existe un programa llamado shrink, que protege los ejecutables (EXE), con este puedes usar por ejemplo el Deshrink, que descomprime los archivos protegidos con Shrink.. Y asφ es posible desensamblar y modificar algunos segmentos... Creo que todavφa ya los estoy confundiendo . 

    Lista de descompresores comunes : Deshrink, PeUNLOCK, etc. miles mßs ... 

    Monitor de archivos: Algunos programas crean archivos temporales con los registros correctos, y cuando se vuelven a ejecutar los programas, verifican la informaci≤n del archivo temporal y si es que no es correcta se borra, el monitor de archivos ve los archivos que se crean ... (p.e. UltraEdit, este pide un n·mero de registro, y para comprobar nos dice que necesita reiniciar para comprobar, este crea un archivo llamado uedit.reg). 

    Lista de monitor : File Monitor. 

    Desensamblador (Disassembler): Podemos depurar un programa en el instante, pero tambiΘn podemos desensamblar un programa, o sea, ver lo depurado en el instante, pero tranquilamente podemos estudiar las rutinas sin tener que depurar 'En el momento'. 

    Lista de monitor : IDA (Dos*32 Bits), WDasm, Sourcer 7, etc. . . 

    Konocimientos bßsikos de ensamblador (assembler)
     

    Primero : ┐ Por que digo desensamblar o depurar? .. cuando un programa estß hecho en otros lenguajes de programaci≤n (p.e. C - C++, Visual Basic, Delphi, Pascal) y lo 'compilas'.. o sea, lo dejas en ejecutable(.EXE, .COM) primero, ┐QuΘ es compilar?, hablemos superficialmente de aquello.. imaginemos que tenemos un c≤digo fuente de un programa (supongo que sabes que es eso), y el programa tiene la funci≤n de hacer lo siguiente ... Muestrame Un mensaje, el mensaje dice 'Hola a todos', y cuando lo muestres, que suene un pitφdo, al mismo tiempo, pinta las letras de color verde. Este es un peque±o programa que puede ser hecho en varios lenguajes, pero .. ┐El computador puede entender estas letras humanas y este lenguaje que nosotros entendemos? NO!, para eso necesitaremos un compilador, este transforma este c≤digo en un lenguaje llamado 'mßquina', que  convierte nuestro programita en un .EXE que el procesador sabrß ejecutar, y entonces, tendremos un programa. Al mismo tiempo estamos protegiendo nuestro c≤digo, ┐Por que?, por que si le damos el c≤digo a cualquiera, pueden modificarlo ┐o no?.. por ejemplo si tengo el c≤digo de arriba puedo modificarlo para que sea asφ: 

    Muestrame Un mensaje, el mensaje dice 'MUERANSE TODOS!', y cuando lo muestres, que suenen dos pitφdos, al mismo tiempo, pinta las letras de color azul. 

    Claro que ahora estßn saliendo descompiladores. que revierten el ejecutable a el c≤digo fuentee. Para variar me volvφ a desviar, quedamos en quΘ era un desensamblador, bueno, cuando creamos un programa en Delphi, Pascal, Etc. lo compilados, el desensablador puede 'desensamblar' el program para dejarlo en  

    Ensamblador para la ingenierφa inversa. 

    Ensamblador es un lenguaje de programaci≤n de bajo nivel, ┐ QuΘ significa bajo nivel ?... pues al revΘs de un lenguaje avanzado como 'C', o uno medio como Pascal que son lenguajes para crear programas.. que son de alto nivel.. el lenguaje de bajo nivel es una manera de decir que mientras 'Mas programemos o mßs programa creemos menos control tendremos de este..'. 

    Este lenguaje les va ayudar mucho ... Si prestamos atenci≤n a este peque±o c≤digo fuente, no lo entenderßn si no saben acerca de ensamblador.. si es que es asφ . Les ayudarΘ con los tipos ... 
     

    MOV AX,1111h
    MOV BX,1112h
    CMP AX,BX
    JB saltobueno
    HLT
    saltobueno: 
    DEC BX
    CMP AX,BX
    JNE Acaba 
    JE Continua 
    Continua: 
    DEC BX
    CMP AX,BX
    JE Acaba 
    JB Acaba 
    JG Acaba 
    Acaba: 
    XOR AX,AX
    XOR BX,BX 

    ┐Que rayos significa esto? 

    ┐Estudiaremos todo lo que hace este peque±o texto, e iremos aprendiendo para seguir adelante en nuestro curso.. empezaremos por aprender que es ax y bx mostrados en la primera instrucci≤n. Primero que nada, no son solo estßs dos palabras, en total son las siguiente palabras : AX, BX, CX, DX ... pero .. ┐que son estßs palabras? ... estas palabras son registros de datos, o sea, que contienen informaci≤n en ellas para cßlculos y otras cosas en general. Digamos que guardan datos temporales de la 'memoria'. tocaremos de manera superficial este tema ya que estß curso de aesoft que les puede ayudar al respecto muy meticulosamente. Pensemos que estos registros son para acumular datos en memoria temporalmente .. ┐Ok?.. pensemos ahora que un equipo estßndar con Win95 Usa 32 Bits, los registros para 16 bits (Windows 3.11, piΘnsenlo asφ) son Ax, Bx, Cx, Dx.Pero si queremos trabajar en 32 Bits, o sea Win95, tendremos que agregarles una E para depurarlos en Win95, (P.e. Eax, Ebx, Ecx, Edx).. Me Explico nuevamente, en windows 95 se usan datos de 32 Bits(Para guardar datos)... si estamos trabajando en Windows 3.11 o dos(Versi≤n anterior de Win95, y el a±orado DOS) trabajaremos para guardar datos en 16 bits. Si trabajamos en DOS o en WIN 3.11, deberφamos ver los registros de datos como AX,BX,CX,DX, si trabajamos en Win95 serφan asφ EAX,EBX,ECX,EDX. (Si ves en alguna parte registros de 16 bits. como AH no te sorprendas, es que se separan AX,BX,CX,DX .. ┐C≤mo? .. AX se separa en AH y AL, BX se separa en BH y BL... y asφ sucesivamente.) Ahora imaginemos que tenemos estos registros, ┐cada uno debe tener un valor o no?.. claro, y para este segmento de un c≤digo fuente tenemos el comando mov, el cußl en inglΘs significa move, el cußl significa mover, o sea que 'mueve' el valor 1111 a Ax, y mueve el valor 1112 A Bx, ┐Por quΘ la h? significa que estß en hexadecimal, y tal como dijo Hot Byte en su curso, aprenderemos a transformar de decimal, hexadecimal, binario. 

    Decimal a binario (Todo esta siguiente explicaci≤n gracias a Hot Byte): 
     

    Decimal Binario
    0 0
    1 1
    2 10
    3 11
    4 100
    5 101
    6 110
    7 111
    8 1000
    9 1001
    10 1010

    Aquφ se presenta la conversi≤n de binario decimal: 
     

    Si tenemos el n·mero : 1 1 0 0 1
    La conversi≤n serφa : 1*2

    0

    1*2

    1

    0*2

    2

    0*2

    3

    1*2

    4

    y en decimal es :

    1

    +2

    +0

    +0

    +16 =  19

    El * lo utilizo para multiplicar ... y el n·mero peque±o, es elevar o potencionar (si no sabes, estas muerto).. ahora pongamos el primer n·mero, 1*2, quedarφa 2, si lo elevamos a 0 siempre y siempre quedarß 1, cualquier n·mero elevado a 0 siempre darß 1, ademßs si te diste cuenta, dependiendo de los n·meros que se van agregando en binario para que se vaya aumentando en 1 el exponente (0,1,2,3,4...). En este caso hemos logrado satisfactoriamente convertir el binario 11001 en del decimal 19. Otra cosa! debes tener claro que en la computaci≤n se usa para potencionar el signo '^'.. Sigamos ... Pero primero les aconsejarφa tener una calculadora cientφfica a mano: 

    A continuaci≤n me apoyarΘ en el instituto de investigaciones de MΘxico para apoyar lo que voy a decir: 

    La divisi≤n de un n·mero entre dos es objetiva, cuando se divide y queda entre comas el resultado(p.e.:15,3), quedarßn 'residuos',(15,3 <esto es residuo) si el residuo es mayor que 0, serß 1, si igual a 0, serß 0. si  esto se explica de la siguiente manera ... 

    TOMEMOS EL NUMERO 43 COMO EJEMPLO : 

     

    43/2 = El resultado es 21,5 .. 5 es mayor que 0, o sea que queda como 1
    21/2 = El resultado es 10,5 .. 5 es mayor que 0, o sea que queda como 1
    10/2 = El resultado es 5,0 ... 0 es igual a 0, o sea queda como 0
    5/2 = El resultado es 2,5 ... 5 es mayor que 0, o sea queda como 1
    2/2 = El resultado es 1,0 ... 0 es igual a 0, o sea queda como 0
    1/2 = El resultado es 0,5 ... 5 es mayor a 0, o sea queda como 1
    Vamos a tener que mirar este n·mero de abajo hacia arriba, o sea 101011

    Conversiones a Hexadecimal 

     Miremos la siguiente tabla para empezar a guiarnos un poco : 
     

    Decimal Hexadecimal
    0 0
    1 1
    2 2
    3 3
    4 4
    5 5
    6 6
    7 7
    8 8
    9 9
    1 A
    11 B
    12 C
    13 D
    14 E
    15 F
    16 10
    17 11
    18 12
    19 13
    20 14
    21 15
    22 16
    23 17
    24 18
    25 19
    26 1A
    27 1B


    siguiente con lo dicho convertiremos de binario a hexadecimal 

    Un n·mero binario (1-0) es un bit, ocho bits son un byte, 1.024 bytes es un kilobyte, 1.024 kilobytes es 1 Megabyte, 1.024 Megabytes es un gigabyte...

     

    Volvamos a lo nuestro ; veamos nuevamente el c≤digo fuente : 
     

    MOV AX,1111h ; Nuevamente sabemos que el registro AX vale 1111 en Hexadecimal, se pone una 'h' si es hexadecimal
    MOV BX,1112h ; Ahora sabemos que BX vale 1112 en Hexadecimal.
    CMP AX,BX
    Ahora averiguaremos que es CMP, 'podrφamos' decir que proviene de 'comprobar', primero comprueba el 2do valor con el primero, o sea, comprueba si es que BX es igual a AX. Y despuΘs de comprobar tenemos que saber quΘ queremos comprobar, si es menor, o mayor, o lo que sea, para esto utilizaremos el comando JB(abajo).
    JB saltobueno
    El comando JB es uno de varios saltos disponibles para operaciones .. o sea, que si tenemos que comprueba el valor de AX con BX .. ┐luego quΘ? .. es como decir que : mira, te subo el sueldo y despuΘs hago algo .. ┐pero quΘ? .. --mira, te subo el sueldo pero luego te despido-- se entiende? despuΘs de hacer alguna operaci≤n debemos darle una instrucci≤n .. en este caso JB significa : salta si es inferior... en este caso veremos que si dejamos a AX con el valor de 1111 y a BX con el valor de 1112, despuΘs los comprobamos y JB harß la comprobaci≤n de : Si AX es menor que BX, entonces salta a la instrucci≤n SALTOBUENO que estß abajo. Ojalß que hayas entendido esto .. mira la tabla que estß mas abajo.
    HLT ; Esta orden bloquea el ordenador, halt > con esto decimos todo.
    saltobueno:  ; si te das cuenta, hemos puesto saltobueno: con ':' al final, para declarar que es una funci≤n.
    DEC BX
    DEC, ┐QuΘ es esto? .. viene de la palabra inglesa 'decrease', que significa decrementar o disminuir, y entonces disminuirß el valor BX (1112) en 1 y quedarß 1111. Dec sirve para quitar solamente 1.
    CMP AX,BX ; DespuΘs de programar comprobarß que Ax con BX ahora valen lo mismo
    JNE Acaba 
    JE Continua 
    TratarΘ de explicar, JNE es un salto tambiΘn, JNE significa = Salta si no es equivalente, y JE es el contrario de JNE, o sea  JE = Salta si es equivalente, dime.. ┐crees que la funci≤n JNE se va a ejecutar? .. piensa tu respuesta.
    Continua: 
    DEC BX ; Ahora BX vale 1110h
    ┐ Ahora te diste cuenta que disminuimos nuevamente a BX ?
    CMP AX,BX ; comprueba nuevamente a AX con BX
    JE Acaba 
    JB Acaba 
    JG Acaba 
    JE = Salta si es equivalente, (Saltarß? .. no ..) JB = Salta si es inferior,(No es menor, no saltarß) JG = Salta si es mayor, en este caso, saltarß.. AX es mayor que BX.
    Acaba: 
    XOR AX,AX
    XOR BX,BX 
    ; AX y BX valen ahora cero. XOR torna los registros en 0.

    Si tomamos todo lo que decφa toda la sentencia de este mini programa en ensamblador es como si se tomara esto : 

    Ax = Javier - Bx = Federico (Bueno para el pic..) 

    Javier tiene ahora (mov ax,1111h) 1111 Condones, y Federico tiene 1112(mov bx,1112h) Condones, para comprobarlo los cuentan(cmp ax,bx) y por que Javier tiene menos se van al prostφbulo(JB Saltobueno), y en el prostφbulo(saltobueno:), Federico se gasta uno (Dec bx), despuΘs nuevamente los cuentan (cmp ax,bx). Se dan cuenta que no estßn disparejos (JNE acaba) y que tienen los mismo, pero despuΘs se van al basurero municipal(JE continua), y Federico necesita solo 1110, asφ que bota uno (Dec bx). Los cuentan nuevamente (cmp ax,bx), despuΘs cuentan si tienen los mismos (JE acaba) y no tienen lo mismo. DespuΘs ven si Javier tiene menos(JB acaba), no, no tiene menos, despuΘs ven si Javier tiene mßs, si tiene mßs,(JG acaba), despuΘs se aburren, y los van a bota todos (acaba:) ... Javier los quema todos(XOR AX,AX), y Federico tambiΘn (XOR BX,BX). 


    Hexadecimal Assembler Significa
    75 o 0F85 jne Salta si no es equivalente
    74 o 0F84 je Salta si es equivalente
    EB jmp Salta directamente a . . .
    90 nop ( No OPeration ) Sin operaci≤n
    77 o 0F87 ja Salta si esta sobre
    OF86 jna Salta si no esta sobre
    0F83 jae Salta si esta sobre o igual
    0F82 jnae Salta si no esta sobre o igual
    0F82 jb Salta si es inferior
    0F83 jnb Salta si no es inferior
    0F86 jbe Salta si esta debajo o igual
    0F87 jnbe Salta si no esta debajo o igual
    0F8F jg Salta si es mayor
    0F8E jng Salta si no es mayor
    0F8D jge Salta si es mayor o igual
    0F8C jnge Salta si no es mayor o igual
    0F8C jl Salta si es menor
    0F8D jnl Salta si no es menor
    0F8E jle Salta si es menor o igual
    0F8F jnle Salta si no es menor o igual

    Seg·n por lo que hemos visto hasta ahora los tΘrminos que nos podrφan servir serφan : 

    Cmp xx,xx = (X = Registro) Compara valores de un registro y a sea AX,BX,CX,DX (Recordad que pueden ser de 32 bits, o sea, (E)AX, (E)BX, (E)CX, (E)DX.) .. Que recomendaci≤n podrφa darte cuando en futuros casos te encuentres con estas comparaciones ? :-IntercΘptalas cuando estßn en plena comprobaci≤n-:] 

    Jne xxxxx = Cuando saltes a una direcci≤n por ejemplo; cuando saltes a una ventana de error diciendo que te registraste mal, y estΘs despuΘs de una comprobaci≤n ... :-Revierte los saltos! asφ pensarß que no es equivalente-:, me explico, si nos encontramos con una operaci≤n de registro que dice asφ: 
     

    014F:00401DD 3BC7 Cmp eax, edi
    014F:00401DE  0F85061DC1FF  Jne 00401DF  ; 000401DF es una direcci≤n de ejemplo, cuando tengamos que desensamblar un programa serß asφ.
    014F:00401DF  "Registro Fall≤" El texto solo por ejemplo de lo que serφa un registro fallido.
    Lo que podemos hacer aquφ es "invertir" el salto tal como lo mencionamos anteriormente... lo que estß en COLOR lo puse asφ para que reconocieran que esta es la instrucci≤n en hexadecimal, para invertir miremos la tabla que tenemos arriba, tendrφamos que cambiar la instrucci≤n 0F85061DC1FF por 0F84061DC1FF ... en muchos otros casos mßs se puede usar este mΘtodo... no solo en la instrucci≤n JNE, tambiΘn se puede usar en otras instrucciones, asφ, estaremos revirtiendo la comprobaci≤n, y pensarß ... : La comprobaci≤n original tiene esta apariencia : 'Si no es el n·mero correcto, entonces, saltarß al error' ... pero la cambiaremos para que diga .. 'Si el n·mero no es correcto... entonces... registro Exitoso!'... asφ estaremos burlando la protecci≤n del programa; pero nos podremos encontrar alg·n dφa con alguna protecci≤n asφ:
    :004049CD 755A  jne 00404A29
    Lo que podemos hacer es hacer que sea un salto directo, o sea reemplazando 755A con EB5A .asφ quedarφa en un JMP 00404A29...
    Todavφa los tengo enredados con la parte te≤rica, pero con los ejemplos nos acostumbraremos con los ejemplos que tendremos ..

    Test xx,xx = Estas instrucciones no se las he mostrado, pero tambiΘn son rutinas de verificaci≤n, tambiΘn podemos poner una interrupci≤n aquφ. 


    Enfatizando kon las herramientas
    Tendremos que usar nuestras herramientas, acostumbrarnos a ellas, sentirlas, experimentar, provocar errores, aprender de ellos
    usemos nuestras herramientas, vamos a probar con ellas, descarguemoslas todas desde una sola vez ... 

    Depuradores

    Soft-Ice :-Nuestro a±orado depurador, descarguemos la versi≤n completa  Aquφ, vamos a descargar la versi≤n 4.0 para Windows 95., ya que no necesitaremos mßs que eso. Si no me equivoco son 16 Mb. Si es que no funciona, prueben esta. Podremos usar este con mayorφa, serß nuestro depurador. 

    Configuraci≤n se Soft-ICE: Desde ahora le llamaremos SICE, y cuando lo instales deberßs correr por las siguientes configuraciones . . ., desde la 1ra configuraci≤n hasta la 3ra serßn configuraciones de instalaci≤n. 

    1ro: Requerirß de una contrase±a: C≤mo todavφa no les he ense±ado nada, les darΘ la contrase±a : 4111-36143B-B7 

    Desde ahora a las contrase±as les llamaremos seriales 

    2do: Configuraci≤n de tarjeta de vφdeo: SoftIce prßcticamente detectarß tu tarjeta de vφdeo, si es que no es asφ, elije la tarjeta 'super vga'. Deberßs hacer la prueba de vφdeo con el bot≤n 'test'. 

    3ro: Modificaci≤n de tu AUTOEXEC.BAT: deberßs saber que es tu autoexec.bat, si no sabes lo que es el autoexec.bat, puedes rendirte.. abandona este curso... si lo sabes, SoftIce se cargarß en tu Autoexec.bat para que se inicie cada vez que parte tu computador. Si es que te llegan a ocurrir esos tφpicos errores de Windows, SICE se cargarß, antes del error y a veces puede ser molesto y a veces puede dejar el error mßs grande a·n. Asφ que te recomiendo que cuando comenzemos a crackear no lo cargues en el autoexec.bat, si no crea un bat. Si es que lo instalaste en nuestro directorio C:\Archivos de programa\Numega\softIce\ . PodrΘ ayudarte, pon esta lφnea en un bat. Si es que elegiste que no modificara tu autoexec. deberßs salir de windows en modo ms-dos, y cargar el bat.. 

    C:\ARCHIV~1\NUMEGA\SOFTIC~1\WINICE.EXE 

    4to: Una vez instalado lanzar Symbol Loader: deberßs lanzar el 'symbol loader', ir al men· edit, luego a SoftICE initialization settings. en donde dice 'Initialization string' debes poner X;wl;wr;wd7; code on;, y en donde dice 'History Buffer size (KB)' debes poner '512'.  

    5to: Con un editor de texto: Debes abrir el fichero 'Winice.dat' que esta el el directorio en donde instalaste el SICE, y habrßn lφneas en donde se dice ';EXP=', a todas las lφneas deberßs quitarle el ';' al comienzo para que queden asφ 'EXP='. Mas tarde explicarΘ el porquΘ de esto. 

    6to: Una vez hechos los cambios: Reiniciar el equipo para poder lograr la completa actualizaci≤n de los cambios que hemos hecho, para todo este explicado mas ampliamente estß un tutorial en ECD de c≤mo configurar SoftICE


    Desensambladores

    WDasm :-No es el mejor, pero lo utilizaremos al comienzo, para seguir avanzando, es un desensamblador. Luego comenzaremos a utilizar el llamado IDA (Interactive DiSassembler) puedes descargarlos de una serie de mirrors, como siempre les darΘ 2 solamente,este y este. 

    IDA (Interactive DiSassembler) :-El mejor desensamblador, todo lo te≤rico que he hablado se entenderß en cuanto hagamos nuestro ejemplo volar por las nubes. Lamentablemente los mirros que tengo, uno es de la versi≤n nueva y otro de una versi≤n mas antigua. 


    Editores Hexadecimales

    UltraEdit 6.x :-Uno de los mejores editores hexadecimales, gracias a dios que el shareware lo reparten gratuitamente en http://www.ultraedit.com , pronto aprenderemos a crackear nuestras propias herramientas, es lo primero que debemos hacer. Este lo vamos a dejar para el segundo capitulo, les regalarΘ el crack de todas las siguientes herramientas por el solo hecho de ser principiantes. 

    Hex Workshop 2.54 :-Otro de los mejores editores existentes, tambiΘn requiere de crackeo .. se puede descargar aqui . Y el serial de este programa es : B5-45678. 

    Hacker's View 6 :-Para mi simplemente el mejor editor existente... NO SE FIJEN EN MI PALABRA! ENCUENTREN SUS HERRAMIENTAS FAVORITAS! descarguen Hacker's View aquφ y el crack por aquφ. 

    La primera Aproximaci≤n
     
    He aquφ nuestra primera aproximaci≤n, nuestro objetivo fue escogido al azar, y es un tφpico ejemplo de una combinaci≤n serial/fßcilismo, debo mencionar que podremos seguir con muchas protecciones distintas. Empezaremos con protecciones fßciles y luego seguiremos con distintos esquemas de protecci≤n, aumentando asφ nuestro nivel poco a poco.
    Ejemplo n║1 :

     

    Nombre : ToggleMouse  Tama±o del ejecutable: 618.486 Bytes
    Versi≤n : 3.4.3 Ubicaci≤n : http://kutcracks.virtualave.net/kutfilez/toggle.zip
    Nombre del ejecutable : Togglemouse.exe Tama±o del zip:418 Kb
    Caracterφsticas : Programa que permite generar utilidades con el Mouse Protecci≤n : Sencilla
    Tiempo estimado : 20 Minutos (Para ayudar a los principiantes) Tipo de protecci≤n : Serial*Registro*Tiempo
    Precio : 14.95 D≤lares americanos + 4.00 por compra y resguardo en diskette Limitaciones : 30 Dφas de prueba + 7 Dφas de terminaci≤n extra + Una pantalla que nos dice que tenemos que registrarnos.
    Herramientas a utilizar : WDasm, Editor hexadecimal, Zen Cracking.

    Primero que nada tenemos que familiarizarnos con el programa, ejecutemoslo, exploremos, y por un momento olvidemonos que se tiene que comprar, exploremos, miremos, probemos,  enfatizemos con el programa. DespuΘs de hacer varias pruebas con el programa, le doy 2 puntos y medio de 5, fue de mi agrado. Recordemos que solo crackeamos para extender el periodo de prueba de un programa para probarlo al mßximo de sus capacidades. Y para aprender de Θl. En este caso estudiaremos este programa paso a paso para ver quΘ es lo que hace y c≤mo lo hace .. ┐Listos para comenzar? 

    4.1 -Te≤rico, ahora, prßctico. 

    Ok, vamos a abrir este bebΘ, se preguntarßn quΘ es el zen cracking.. le llamaremos Zen Cracking a la manera en que usamos nuestra mente para pensar en c≤mo funciona un programa, y por donde atacaremos ... algo asφ, no se puede explicar, sin embargo ud. mismos lo aprenderßn en el transcurso de este largo curso, sin que yo les diga poco a poco de que se trata. Vamos a empezar por averiguar el c≤mo usar nuestras propias herramientas, al mismo tiempo que vamos interactuando con el programa, te recomendarφa que imprimieras este curso ya que con reiniciar e instalar softice y las herramientas se verß difφcil estar cambiando de ventanas para leer mientras tratas de crackear el programa. 

     

  • Empezemos con nuestro amado programa, primero que nada, instalemos el WDasm, y corramos su ejecutable, apareceremos en una ventana tφpica de programas hechos en Windows, en el men· Disassembler. Open file to disassemble. Ahora, abramos nuestro ejecutable 'togglemouse.exe', y verßn c≤mo la barra avanza la barra de progreso. Cuando termine, no empezaremos a crackear enseguida, si no que exploraremos las funciones de Wdasm para conocerlo mejor. Primero, conoceremos las referencias de datos (String data references). Si prestas atenci≤n a un bot≤n a la esquina superior derecha. Al lado del bot≤n de la impresora. Miremos la figura a continuaci≤n:

  • sabemos que si presionamos el primer bot≤n abriremos otro archivo, si presionamos el segundo bot≤n, guardaremos en un archivo el otro archivo ya desensamblado. Para este caso, usaremos referencias de cadenas, presionemos en aquel bot≤n y veremos un listado de diferentes cadenas a las cuales llama el programa. Ejecutemos el programa ToggleMouse, en este caso veremos una carpeta que dice 'Order' (Ordenar), y aparecerß un bot≤n que nos parecerß interesante... 'Click here to enter your registration code'(click aqui para poner tu c≤digo de registro). Le daremos un click y veremos una ventana diciendo que pongamos nuestro  nombre, compa±ia, y nuestro c≤digo de registro(serial). Escribamos un nombre p.e. 'M@NIAC PC', luego, una compa±ia p.e. 'KUt', y un serial cualquiera como   '1234567890'... aparecerß un dißlogo diciendo 'The registration information you have entered is not valid. Please confirm that you have entered the information exactly as it was provided', tienes que saber aunque sea un poco de inglΘs bßsico para saber que esto es decir 'La informaci≤n escrita no es vßlida. Por favor confirme que ha escrito la informaci≤n tal como se le fue dado'...Nuestro objetivo por esta vez en Wdasm, serß buscar cadenas relacionadas con registros(o sea, dißlogos de compra y serial) .. busquemos y las cadenas que me aparecieron y encontrΘ algo fueron:
  • String Resource ID=00157: "EconoClick has saved you %d clicks."

  • String Resource ID=00158: "You haven't taken advantage of the EconoClick feature." 
    String Resource ID=00159: "You've clicked %d times, double-clicked %d times, right-clic" 
    String Resource ID=00160: "You haven't used the PopDesk feature yet." 
    String Resource ID=00161: "You have used the PopDesk feature %d times." 
    String Resource ID=00162: "Your web browser will now be started and the Toggle Software" 
    String Resource ID=00163: "Your web browser could not be started automatically. Please " 
    String Resource ID=00164: "Registration is Complete!Thank you very much for registeri" 
    String Resource ID=00165: "The registration information you have entered is not valid." 
    String Resource ID=00166: "Dear Customer,Our registration system has changed and in o" 
    String Resource ID=00167: "On some systems, color scrolling cursors may flicker while y" 
    String Resource ID=57344: "ToggleMOUSE" 
    String Resource ID=61446: "an unnamed file" 
    String Resource ID=61472: "No error message is available." 
    String Resource ID=61473: "An unsupported operation was attempted." 
    String Resource ID=61474: "A required resource was unavailable." 
    String Resource ID=61475: "Out of memory."
  • He remarcado las cadenas queme parecieron interesantes, si te acuerdas, la segunda que remarquΘ te parece conocida .. ┐Verdad?.. y la primera si es que te diste cuenta es la cadena que te dice que te registraste bien, en el cuadro de dißlogos de Wdasm demosle click sobre la cadena 'Registration is Complete!...' para ver de que se trata, pero realmente no nos interesarß esto ya que buscamos el por quΘ se produjo el error, o sea, demosle doble click a la cadena 'The registration information ...' y veremos lo siguiente :
  •  
    •  

    • * Referenced by a (U)nconditional or (C)onditional Jump at Address:
    • |:0040E82A(C)
    • |
    • :0040E8DF 6AFF push FFFFFFFF
    • :0040E8E1 6A10 push 00000010
    • * Possible Reference to String Resource ID=00165: "The registration information you have entered is not valid."
    • |
    • :0040E8E3 68A5000000 push 000000A5
    • :0040E8E8 E840F70100 call 0042E02D
    • :0040E8ED EB2F jmp 0040E91E
    •  
  • Con esto los tengo confundidos, ya que hay 2 cosas que no les ense±e de ensamblador antes, la funci≤n push, y call, a call, tal como lo suena su nombre en inglΘs 'llama' a funciones. En este caso llamarß a otras funciones para que se ejecuten (jne,mov, etc.)
  • DarΘ este c≤digo peque±o para que vean de que se trata la funci≤n 'call'. 
     

    mov ax,23h ; mueve el valor de 23 a AX
    call muevete ; llamada a 'muevete
    xor ax,ax
    xor bx,bx
    muevete: ; declara la funci≤n 'muevete'
    mov bx,24h ; mueve el valor 24 a BX
    ret ; otra funci≤n no vista, ret 'retorna' a la funci≤n.., retorna desde el call hacia adelante.
    Una vez terminada la funci≤n 'muevete' volverß a la instrucci≤n siguiente despuΘs de la 'llamada', o sea, seguirß desde el xor ax,ax en adelante por el ret, y con esto dejarß a AX y BX en 0. Por las instrucciones XOR.

    El comando push pone un valor en el tope de la 'pila', me explico. Si decimos como arriba push 00000000 serφa mover el valor a la memoria. O sea como mover el valor 00000000 (Que es igual a 0) a la memoria6 para que quede con ese valor, esta memoria es como 'la cima' de los registros. (Como dice Ed!son, el Push es para guardar valores para su uso posterior) 
    Sigamos con lo nuestro,  tenemos la palabra "The registration information you have entered is not valid.", pero si prestamos atenci≤n veremos que arriba tiene escrito ' Referenced by a (U)nconditional or (C)onditional Jump at Address:' lo que significa 'Tiene una referencia de un salto (c)ondicional o (i)ncondicional de la direcci≤n", esto quiere decir que la instrucci≤n de error ("The registration information ...) Fue llamada desde una direcci≤n, y nos aparece el siguiente texto:

    • * Referenced by a (U)nconditional or (C)onditional Jump at Address:
    • |:0040E82A(C)
    • Para esto quiere decir que la cadena de error fue llamada desde la direcci≤n 0040E82A, tenemos que presionar el bot≤n 'IR A UBICACI╙N', o ir al men· 'Goto' (Ir a..) y ver 'Goto Code Location'.. y escribiremos la direcci≤n de la cußl se llama, o sea 0040E82A, iremos ahφ y nos encontraremos con el siguiente pedazo de c≤digo:
    •  
      * Possible Reference to Dialog: DialogID_7801, CONTROL_ID:0064, ""
      |
      :0040E794 6A64 push 00000064
      :0040E796 8BC3 mov eax, ebx
      :0040E798 33D2 xor edx, edx
      :0040E79A 59 pop ecx
      :0040E79B F7F1 div ecx
      :0040E79D FF7508 push [ebp+08]
      :0040E7A0 8BF0 mov esi, eax
      :0040E7A2 8BDE mov ebx, esi
      :0040E7A4 81F321332153 xor ebx, 53213321
      :0040E7AA E8E1570000 call 00413F90
      :0040E7AF 3DD7E7FC00 cmp eax, 00FCE7D7
      :0040E7B4 59 pop ecx
      :0040E7B5 0F8434010000 je 0040E8EF
      :0040E7BB FF7508 push [ebp+08]
      :0040E7BE E8CD570000 call 00413F90
      :0040E7C3 3D00A02E02 cmp eax, 022EA000
      :0040E7C8 59 pop ecx
      :0040E7C9 0F8420010000 je 0040E8EF
      :0040E7CF FF7508 push [ebp+08]
      :0040E7D2 E8B9570000 call 00413F90
      :0040E7D7 3DF87A4138 cmp eax, 38417AF8
      :0040E7DC 59 pop ecx
      :0040E7DD 0F840C010000 je 0040E8EF
      :0040E7E3 FF7508 push [ebp+08]
      :0040E7E6 E8A5570000 call 00413F90
      :0040E7EB 3D9EB18C00 cmp eax, 008CB19E
      :0040E7F0 59 pop ecx
      :0040E7F1 0F84F8000000 je 0040E8EF
      :0040E7F7 FF7508 push [ebp+08]
      :0040E7FA E891570000 call 00413F90
      :0040E7FF 3DD713B200 cmp eax, 00B213D7
      :0040E804 59 pop ecx
      :0040E805 0F84E4000000 je 0040E8EF
      :0040E80B FF7508 push [ebp+08]
      :0040E80E E87D570000 call 00413F90
      :0040E813 3DF6336A2C cmp eax, 2C6A33F6
      :0040E818 59 pop ecx
      :0040E819 0F84D0000000 je 0040E8EF
      :0040E81F FF7508 push [ebp+08]
      :0040E822 E869570000 call 00413F90
      :0040E827 3BC6 cmp eax, esi
      :0040E829 59 pop ecx
      :0040E82A 0F85AF000000 jne 0040E8DF
      :0040E830 E84B3B0200 call 00432380
      :0040E835 8B4004 mov eax, dword ptr [eax+04]
      :0040E838 56 push esi
      * Possible StringData Ref from Data Obj ->"Registration"
      |
      :0040E839 BEC4264400 mov esi, 004426C4

      He remarcado claramente la instrucci≤n que llama al error, en mi primer ejemplo de ensamblador, puse un Jne acaba, y en este caso llamamos a un Jne 0040E8DF, no se preocupen, cuando se programa en ensamblador, se etiquetan las instrucciones como acaba, digamos que es lo mismo pero que en vez de etiquetas como 'acaba' se etiquetan cuando se desensambla en direcciones tales como '0040E8DF'... Tal como les dije en unas pßginas atrßs, ┐QuΘ haremos con esta instrucci≤n que salta si no es equivalente?.. exacto!, la revertiremos de una manera de la cußl pensarß que estamos registrados correctamente si escribimos un c≤digo erroneo.. pero.. íCuidado!, vamos a aprender que si es que revertimos el salto ahora ... pensemos un poquito .. si lo revertimos para que si escribimos un serial incorrecto piense que es correcto .. ┐QuΘ pasarß si escribimos el serial correcto? .. BUM! el error se arrojarß en ese caso .. pero .. hey! antes de que hagas cualquier tipo de cambio como bestia salvaje sin nada que hacer mas que reventar unos bytes. vamos a lanzar el monitor de registro del sistema. para observar si es que el programa produce cambios en el registro de Windows.. Mßs tarde se explicarß que Θs el registro de Windows.  Puedes descargar el monitor de registro aquφ o puedes usar este otro. 

      4.1.0 -Una peque±a explicaci≤n. 

      Si es que miramos arriba del salto jne 0040E8DF podemos observar una call. 

        :0040E822 E869570000 call 00413F90

      :0040E827 3BC6 cmp eax, esi
      :0040E829 59 pop ecx
      :0040E82A 0F85AF000000 jne 0040E8DF
      :0040E830 E84B3B0200 call 00432380

      Si es que recuerdas, 'push' era para mantener un valor temporalmente en la cima de la memoria, el comando mencionado aqui ('pop') obtiene el valor del 'push' puesto en la cima de la memoria y al mismo tiempo le agrega 2 unidades, mßs tarde hablaremos de estas llamadas 'unidades'. En este ejemplo, el pop obtiene el valor de la cima de ecx. ┐ Y para que menciono ademßs del pop a la funci≤n call ?.. puesto que antes del salto al error, (jne 0040E8DF) se llama a este famoso call que va a la direcci≤n en la cußl se comprueba el serial que has escrito, y si recuerdas, despuΘs de comprobar todo este famoso enredo vuelve (Un RET) y Salta si no es equivalente el serial que has escrito .. ┐Ves que no es tan difφcil como parece?. 

    Al Atake
    Lancemos ahora tu editor hexadecimal, abre el ejecutable de ToggleMouse(ToggleMouse.exe) y vayamos al men· 'Edit' y luego 'Replace' busquemos la cadena hexadecimal de JNE (Tal como lo expliquΘ arriba) 0F85AF000000 y lo reemplazaremos con la instrucci≤n JE(La inversa) que es 0F84, o sea que serφa 0F84AF000000. Usa para esto UltraEdit o Hex WorkShop, el hacker's view funciona de otra manera que explicarΘ en otro capφtulo.  

    Una vez que hayamos guardado los cambios, iniciemos ToggleMouse con el monitor de registro abierto y reluciente esperando a su vφctima ser acosada. Vayamos al men· order, presionemos 'enter regitration code', escribamos el nombre que queramos registrar, una compa±ia, y cualquier n·mero serial, presionemos 'Ok' y veamos que sucede .. 'Registration Complete! thank you very much for registering ..' ... estamos registrados, no estemos contentos con eso, hemos descubierto una est·pida protecci≤n. Pero todavφa no se acaba esto!, tenemos que aprender mßs y mßs del programa, no solo trata este curso de matar y matar, sino, el verdadero conocimiento en sφ!, ahora,  veamos el monitor de registro.. dice que se abri≤ y creo una clave en : 

    HKEY_CURRENT_USER\Software\Toggle Software\ToggleMOUSE\Registration 

    ┐Poco imaginativo no .. ?... Bueno, veamos lo que tenemos aqui, en mi caso, puse como nombre a : M@NIAC PC, de compa±ia a : KUt99, y despuΘs, nos vamos a 'ejecutar' en el men· de Inicio de Win95, y escribimos 'regedit', lanzamos con esto al editor de registro de configuraciones, presionamos F3 para Buscar, y escribimos ToggleMOUSE, despuΘs de una b·squeda los encontraremos por aquφ, en nuestra izquierda deberφamos tener lo siguiente: 

      " ToggleSoftware

    "ToggleMOUSE
    "Blink
    "PanicStopper
    "QuikScroll
    "Registration <- Esta es la cadena interesante.
    Demosle un click y apareceremos por aquφ a la derecha :
    Tal como podemos apreciar tenemos la compa±φa ; (KUt99), el Nombre; (M@NIAC PC) y el n·mero de registro para estos dos nombres, (31071472) .. Vamos a tener un grave problema si no utilizamos los mismos nombres y compa±ia, podrφamos probar eliminando todos estos valores (Excepto siempre el que dice (predeterminado)).. explicaci≤n de lo dicho, el programa, para generar su propio n·mero serial, hace sus propias operaciones algebrßicas con letras, o sea, para cada letra que se genere, harß su propia multiplicaci≤n, divisi≤n, Θtc. esto se explicarß mßs adelante en un capφtulo mas avanzado. Tomemos por ejemplo otra operaci≤n de un programa inventado, o sea, en el programa dice 'Nombre' y 'serial'. Imaginense que el programa tiene como funci≤n poner en este caso, que si como nombre tenemos una 'm' min·scula esta vale 8, y si es may·scula esta vale 3, ┐ok?, y si ponemos una 'm' junto con una 'a' harß una operaci≤n matemßtica complicada... traten de entenderlo superficialmente, ya que se estudarß esto mßs tarde con mßs interΘs en ello. 

    El Registro de Windows
    Lo siguiente es un trozo del Proyekto Nakarko.

    Saludos pe±ita! Aquφ estoy otra vez despuΘs de unas largas y merecidas vacaciones... voy a hacer un ligero parΘntesis y en este manual no voy a explicaros ning·n crack, otra vez serß amiguetes... En esta ocasi≤n voy a tratar de explicaros tooodito sobre una de las "armas" para cracking que el patΘtico Windown pone a nuestro servicio, el Registro. 

    El principal motivo por el que escribo este texto es superar la vagancia en la que estoy sumido, hace tiempo que no me trago un mφsero manual, pues bueno aprovecho mis indagaciones en este temita y para hacerme mßs amena la lectura os sirvo este texto, a ver si os vale de algo... 

    Este manual no estß dirigido esencialmente al cracking, es mßs bien una *.HLP de esos que M$ nos regala que puede ser interesante tanto para un usuario cualquiera como para los programadores de aplicaciones para su pseudo-SO. 

    ┐? Loading Data...QuΘ es el Registro de Windown 

    El registro es una base de datos definida por el sistema que tanto w95 como las aplicaciones que sobre Θl funcionan utilizan para guardar y obtener informaci≤n sobre determinadas configuraciones, en Θl podemos encontrar desde las extensiones asociadas a cada programa, el lugar donde estßn determinadas dlls, el contenido de men·s desplegables, los drivers necesarios para nuestro hard... hasta las ·ltimas urls que hemos visitado. Casi un 100% de lo que en nuestro PC ocurre estß grabado en el registro, poco escapa de sus garras... 

    La informaci≤n que se guarda en nuestro registro es informaci≤n en binario, esta informaci≤n varia dependiendo de la versi≤n de windown en uso y del hard/software que tengamos instalado. 

    Para manipular la informaci≤n del registro podemos hacerlo manualmente usando alg·n proggie que nos lo permita o utilizando las funciones del registro (para programadores), este tema lo tocaremos mßs adelante. 

    El registro estß dentro de dos archivos, system.dat y user.dat que suelen ser de tama±o aberrante (+2megas). 

    El registro es accesible y modificable gracias (entre otros) al REGEDIT.EXE uno de los muchos programas "escondidos" en el directorio Windows. 

    ┐? Estructura del registro. 

    El registro almacena datos en forma de ßrbol jerarquizado, cada rama del ßrbol es llamada "Key" , cada "Key" puede contener "SubKeys" y entradas de datos llamadas "Values" . Para haceros una idea de c≤mo es esto imaginaros "Key" como un directorio donde hay subdirectorios "Subkey" y ficheros con datos "Values". 

    Muchas veces la presencia de una "Key" es lo ·nico que necesita un programa para funcionar, otras veces nos encontramos con uno o varios "Subkeys" y/o "Values" dentro de una "Key", una "Key " puede tener tantos "S" y "V" como necesite y los "Values" pueden estar en cualquier formato. 

    Cada "Key" tiene un nombre que consiste en 1 o mßs caracteres imprimibles en formato ANSI, esto es, caracteres con valores de rango 32-127, estos nombres no pueden empezar por "\" (backslash o antibarra) ni por " * ≤ ┐". Las "Key" que comienzan por un punto ( . ) estßn reservadas. 

    Cada "Subkey" s≤lo estß definida en la "Key" inmediatamente superior al nivel donde la "Subkey" se aloja, de esto sacamos dos cosas, dentro de diferentes "Key" podemos tener "Subkeys" de nombre idΘntico y ademßs estas "Subkeys" no tienen por quΘ tener nada que ver, cada rama del registro es independiente de las demßs a no ser que dentro de la rama se explique la relaci≤n existente entre las dos. 

    ┐? Ramas del Registro 

    Antes de escribir un dato en el registro una aplicaci≤n debe abrir una "Key", para abrir una nueva "Key" la aplicaci≤n en cuesti≤n debe apoyarse en otra "Key" ya abierta, el sistema proporciona varias "Keys" que siempre se mantienen abiertas como soporte para las nuevas "Keys", las apliaciones usan estas "Keys" standard como "entrada" al registro.  

    Vamos a ver quΘ es lo que tienen cada una de estas "Keys", he tratado de seguir el orden tal cual aparece al abrir el Regedit y he omitido partes "engorrosas" para hacer mßs fßcil de seguir este papiro y espero que asφ sea porque esto es un tocho del horror... 

    Al abrir nuestro registro con el Regedit.exe u otro programa que nos permita esto nos encontramos con: 

    HKEY_CLASSES_ROOT: aquφ tenemos registradas todas las extensiones, tipos de archivo. 

      

    HKEY_CURRENT_USER: detallado de las configuraciones del usuario actual. 

    HKEY_LOCAL_MACHINE: Configuraciones de nuestro PC tales como d≤nde estß nuestro software y d≤nde los drivers instalados. 

    HKEY_USERS: las configuraciones de los usuarios de ese PC (urls visitadas, aplicaciones favoritas...).  

    HKEY_CURRENT_CONFIG: una especie de especificaci≤n de LOCAL_MACHINE, mßs detalles de la configuraci≤n actual. 

    HKEY_DYNAMIC_DATA: la informaci≤n "dinßmica", se "forma" al encender el ordenador y desaparece al apagarlo. 

    Podemos considerar lo anterior como grandes ßrboles, al abrir cualquiera de las anteriores ramas nos encontramos montones de hojas llenas de informaci≤n, a continuaci≤n un detallado de cada una de estas ramas... 

      

    ┐? HKEY_CLASSES_ROOT (HKCR) 

    En el GUI "graphic user interface" de windown todo (cada archivo, directorio, disco, etc. ) es considerado como un objeto, cada objeto tiene asociadas unas propiedades, esta rama ("Key") del registro contiene un listado de los objetos y de sus propiedades, por ejemplo *.mid, todos sabemos que son archivos de sonido, pues al abrir HKCR y la "Subkey" .mid verφamos lo siguiente: 

      

    Nombre: Datos: 

    (predeterminado) "midfile" 

    Content Type "audio/mid" 

    Pues tenemos un objeto "midfile" con propiedades "audio/mid", es decir, midfile estß asociado a audio/mid, un cambio de este "Value" nos dejarφa sin poder escuchar la macarena en los bonitos scripts de mIRC... vale la pena cambiarla? ;P 

      

    Las principales funciones de estas claves son: 

    1║ Asociar la extensi≤n de un archivo a un tipo de objeto. 

    2║ Asociar un icono a un tipo de objeto. 

    3║ Asociar una serie de acciones de la lφnea de comandos a un tipo de objeto. 

    4║ Asociar las opciones de los men·s contextuales (desplegables) a un tipo de objeto. 

    5║ Definir lo que aparecerß en la ventana de propiedades (right-clickαpropiedades) para cada tipo de objeto. 

    Como habrΘis deducido cambiando un "Value" podemos asociar un tipo de archivo a un determinado programa, cambiar el icono de un tipo de archivo, a±adir o quitar nuevos tipos de archivos, etc. Etc. 

    Dentro de KCR distinguimos tres tipos de "Subkeys": 

    a) Extensiones de archivos, asocian las extensiones con los tipos de objeto. Mßs clarito, estas "Subkeys" se ocupan de decir quΘ hace windown con cada tipo de archivo (archivos que llevan asociadas determinadas acciones), quΘ men·s despliega al hacer right-click sobre Θl y las propiedades que se muestran al acceder a este men·. Son de este tipo "Subkeys" como .arj, .com, .cab, etc. 

    b) Tipo de objeto, define un objeto en funci≤n de sus men·s desplegables, sus propiedades, su icono y sus enlaces CLSID (tratado a continuaci≤n). 

    c) CLSID, nos da informaci≤n OLE (object linking and enbedding, una aplicaci≤n es llamada por otra automßticamente para editar datos) y DDE ( dynamic data exchange, intercambio de datos entre dos aplicaciones) sobre tipos de objeto, tambiΘn puede contener informaci≤n sobre los men·s contextuales, propiedades e icono. Es importante saber que cada "Subkey" CLSID es ·nica o al menos eso aseguran desde M$ donde se curraron un programilla s≤lo para este temita (generador de claves de 32 dφgitos en hexa...). Es una clave bastante importante en el cracking puesto que gracias a ella podremos conocer mΘtodos de direccionamiento de memoria y enlaces a dll┤s con funciones OLE ( GetDlgItem,lstrcmp.....).

    Al abrir el registro con nuestro regedit.exe y echar un vistazo a KCR nos encontramos que dentro de muchas de las "Subkeys" hay otras "Subkeys" tales como: 

    a) Shell: determina acciones tales como abrir, imprimir, copiar, etc. Por ejemplo una "Subkey" de este tipo determina que reproductor multimedia abre nuestros archivos *.mid. La rama para abrir y ejecutar estos archivos serφa:

    [HKEY_CLASSES_ROOT\midfile\shell]  

    @="Play" 

    [HKEY_CLASSES_ROOT\midfile\shell\open]  

    @="Abrir" 

    [HKEY_CLASSES_ROOT\midfile\shell\open\command]  

    @="C:\\WINDOWS\\rundll32.exe C:\\WINDOWS\\SYSTEM\\amovie.ocx,RunDll /open %1" 

    [HKEY_CLASSES_ROOT\midfile\shell\play] 

    @="Reproducir" 

    [HKEY_CLASSES_ROOT\midfile\shell\play\command] 

    @="C:\\WINDOWS\\rundll32.exe C:\\WINDOWS\\SYSTEM\\amovie.ocx,RunDll /play /close %1" 

    b) Shellex: contienen "Subkeys" que determinan las funciones OLE y DDE para cada tipo de objeto, no son mßs que cadenas numΘricas que apuntan por ejemplo a la dll que ejecuta una determinada operaci≤n y definen las propiedades de sus men·s contextuales. 

    c) Shellnew: contienen el valor de la cadena numΘrica del comando u orden que determina la apertura de un nuevo objeto. Un ejemplo muy sencillito es la clave *.BMP cuya shellnew nos indica el programa con que editaremos una nueva imagen de este tipo. 

    d) Default Icon: contienen el valor de la cadena numΘrica que nos indica el icono por defecto de cada tipo de objeto, normalmente apuntarßn al shell32.dll, pifmgrd.dll ( en \windows\system) o moricons.dll ( en \windows) tal que al primer icono de la lista le asigna el 0 al siguiente el uno y asφ sucesivamente de la siguiente manera:

    C:\Windows\moricons.dll,0

      

    ┐? HKEY_CURRENT_USER (HKCU) 

    Las "Subkeys" de esta "Key" contienen las configuraciones del actual usuario, en caso de ser una mßquina con un ·nico usuario esta clave es casi idΘntica al .DEFAULT de HKEY_USERS. Lo que en ella tenemos es todas las preferencias que en alg·n momento hayamos puesto a±adidas a todas las configuraciones por defecto. Contiene toda la informaci≤n sobre el sistema que no tiene HKEY_LOCAL_MACHINE, esto es, configuraciones del software y preferencias del usuario. Es una parte del registro que podemos cambiar casi sin riesgo de causar un estropicio, casi todas las opciones contenidas en esta clave son modificables desde alg·n "peso pesado" del Windows, como el panel de control, la barra de tareas, cualquier men· de propiedades... 

    Dentro de esta "Key" y con la vista puesta en el cracking la clave \Software es de los mßs jugosa, en ella encontramos desde n·meros de serie hasta jodiendas que nos imposibilitan registrar la aplicaci≤n pero esto viene luego... ;P 

    En esta "Key" nos encontramos con: 

    a) \AppEvents: nos define los sonidos y otras mingadas ( masterCaR-d-19 feo ;P ) con las que windown nos aturde siempre que ejecutamos un programa, metemos la gamba y ezetera ezetera al cubo... EventLabels nos da el nombre de la mingada, Schemes\Apps la localizaci≤n de las mingadas y Schemes\names pues el nombre del tema. 

    b) \Control Panel: contiene las "Subkeys" que nos definen la apariencia de nuestro windown (el color de las ventanas, su tama±o, etc.), las opciones de accesibilidad como las soundsentry o las stickykeys, los cursores, el escritorio (fondo, tama±o de iconos,etc.). Estas opciones son totalmente configurables desde el panel de control. 

    c) \InstallLocationsMRU: bastante clarito el nombre, estas "Subkeys" contienen la localizaci≤n del software instalado, contiene por ejemplo todas las localizaciones de programas instalados con "Wizards" como InstallShield, etc. M.R.U. α Most-recently-used, self explanatory ;P 

    d) \Keyboard Layout: como supongo habrßs deducido pues contiene la definici≤n de tu teclado, en funci≤n de paφs,etc. Y basßndose en un mΘtodo de numeraci≤n que todavφa s≤lo estß en conocimiento de sus creadores...pijadas... 

    e) \Network: contiene tus conexiones de red anteriores divididas en dos clases: 

    Persistent: define los dispositivos y unidades que defines al dejar marcada la opci≤n de "reconectar al desconectar" (valga la redundancia...) las claves contienen informaci≤n como tu navegador, tu nombre de usuario,etc. Estas claves aparecen como iconos en "Mi Pc". 

    Recent: las ·ltimas conexiones de red que has realizado sin la opci≤n de reconectar chequeada, aparecen en men·s desplegables cuando vas a realizar una conexi≤n de red (Path).

    f) \RemoteAccess: contiene las configuraciones de los marcadores de conexi≤n en red, se divide en dos ramas: 

    Addresses: contiene una definici≤n en binario de cada conexi≤n que tengas montada en "acceso telef≤nico a redes". 

    Profile: que se divide a su vez en una rama para cada conexi≤n, en estas ramas encontramos los valores de IP, dominio, nombre de usuario, etc. De cada conexi≤n.

    g) \Software: todas las "Subkeys" que componen esta "Subkey" ( me estoy empezando a cansar de key subkey... ) representan software instalado en tu PC o software que has tenido instalado, las ramas tienen o bien el nombre del programa o bien el nombre del fabricante como distintivo, a veces podemos encontrar claves con el mismo nombre dentro de Local_Machine pero normalmente el contenido serß distinto en cada caso. 

    El contenido de las ramas que podemos encontrar suele ser muy parecido, preferencias del usuario, direcciones de archivos guardados y lo mßs interesante fechas de instalaci≤n, nombres de usuario/n·meros de serie y claves que determinan si el programa estß o no registrado, mßs adelante tocaremos un poco mßs este temita tan interesante. 

     

      

    ┐? HKEY_LOCAL_MACHINE (HKLM) 

    Las diferentes entradas de esta "Key" definen el estado fφsico de nuestro PC, incluyendo datos sobre el BUS, la memoria del sistema y las configuraciones de nuestro hardware y software (registrado / no registrado p.ej.). 

    Contiene 7 "Subkeys" que son: 

    a) \Config: en esta rama se guardan las configuraciones de tu hardware que defines a travΘs del  

    "Panel de Control" pulsando en el icono de "Sistema". La ·ltima configuraci≤n antes de apagar el PC se copia a HKCC al iniciar el equipo. 

    b) \Enum: aquφ es donde estßn guardadas la mayorφa de las configuraciones de tu hardware, tales  

    como los dispositivos PNP, la BIOS, PCI, ESDI, FLOP, ISAPNP, Monitor, SCSI y los dispositivos de conexi≤n en red. 

    c) \Hardware: estß dividida en dos ramas: 

    Description: que contiene la rama \System\Floating Point Processor, que serß 0 o 1 dependiendo de su existencia. 

    Devicemap: que contiene la rama \serialcomm donde se listan tus puertos.

    d) \Network: contiene la rama \Logon que a su vez esta compuesto de los valores LMLogon (serß 1 si la  

    mßquina estß en ese momento conectada en red y 0 en caso contrario), logonvalidated (1 para estar validado), Policy Handler, Primary Provider , username, and UserProfiles. 

    e) \Security: dentro de esta rama hay dos claves, un "Value"nada mßs abrir esta rama y que apunta a una clave remota donde estarßn las opciones de seguridad de red como son por ejemplo los derechos de acceso. La "Subkey" \Provider contiene informaci≤n del servidor.  

    f) \Software: la mayorφa de las "Subkeys" contenidas aquφ nos dan informaci≤n sobre la versi≤n del programa, su licencia,etc. Pero tambiΘn podemos encontrar otra informaci≤n interesante como los drivers que se utilizan al conectarse en red, fuentes, las caracterφsticas de la emulaci≤n de MS/DOS, zona horaria, etc.  

    g) \System: aquφ nos encontramos con una rama de nombre \CurrentControlSet que se abre en \Control y  

    \Services, cada una de estas ramas estßn llenas de ramitas, la mayorφa son de explicaci≤n trivial, todo el mundo sabrß o se imaginarß quΘ hace la rama ComputerName o Shutdown o KeyboardLayout, etc. Os puede dar problemas VMM32 que es una lista de los VxD que tenΘis trabajando y poco mßs. Cuidado con tocar estas configuraciones que os puede dar alg·n disgusto. 

     

    ┐? HKEY_USERS (HKU) 

    Aquφ se definen las configuraciones de cada usuario y las configuraciones que por defecto se le otorgan a los nuevos usuarios, \.Default y \nombredeusuario respectivamente. 

    Las estructuras de cada una de estas "Subkeys" es semejante a HKCU, al efectuar el "login" se copiarßn en HKCU las configuraciones contenidas en su \nombredeusuario. 

      

    ┐? HKEY_CURRENT_CONFIG (HKCC) 

    Los contenidos de esta "Key" se toman al iniciar el ordenata de las configuaciones alojadas en cada perfil de usuario en \Local_Machine\Config. 

    Aquφ nos encontramos con tres "Subkeys": 

    a) \Display: dividido en \Font que contiene las cadenas de valores que determinan las fuentes que pueden  

    aparecer en la ventana principal y \Settings que contiene las cadenas de valores que determinan: BitsPerPixel, diferentes DPIs, oemfonts, fixedfon, fonts y Resolution. 

    b) \Software: donde encontramos detalles de las configuraciones de internet como los proxys o el  

    autodial. 

    c) \System: que s≤lo contiene una rama \CurrentControlSet\control\Print\Printers donde tenemos  

    informaci≤n sobre las impresoras que tenemos definidas a travΘs de InicioαConfiguraci≤nαImpresoras

    ┐? HKEY_DYN_DATA (HKDD) 

    En esta "Key" tenemos la informaci≤n de nuestro sistema detectada al iniciarlo, esta informaci≤n como su nombre indica es dinßmica y por lo tanto susceptible de cambiar en cualquier momento lo que hace que parezca que esta clave no se guarda. 

    Dentro de HKDD nos topamos con: 

    a) \ConfigManager: con una sola rama de nombre \Enum que se abre en un mont≤n de ramitas numeradas 

    que definen el estado, la localizaci≤n, los problemas detectados y la clave del hardware de los dispositivos PNP detectados al iniciar el compiuter. 

    b) \PerfStats: las estadφsticas del funcionamiento actual del ordenata son guardadas en esta "Subkey" bajo 

    apariencia de "Values" en binario, se dice que algunas de las ramas definen el sistema de archivos, o el  

    "management" de la memoria pero no he encontrado nada claro en este tema, s≤lo conjeturas y "parecequeeeee..." lo que estß claro es que estas claves se refieren al funcionamiento de nuestra amada computadora y que indagar en este tema no es de ninguna utilidad para nosotros, de todas formas como el saber no ocupa lugar agradecerφa info de este tema y lo incluirφa al momento en este texto. 

    c) \Security: con una sola rama de nombre \Provider donde encontramos un "espejo" de la rama 

    HKLM\Security\Provider, mientras la primera va cambiando seg·n cambien las propiedades de la red la segunda se mantiene estßtica.

    Ya tenemos definido el registro, lo siguiente que vamos a hacer es aprender a modificarlo, porqueeee para quΘ nos sirve conocer c≤mo funciona algo si no podemos jugar con ello hasta estropearlo? ;P 

      

    ┐? Restaurar el Registro. 

    Como mßs vale prevenir que curar antes de ense±aros c≤mo urgar en el registro vamos a ver c≤mo podemos recuperar el registro por si las moscas se nos va la pinza y conseguimos que o bien nuestro windown no cargue o bien alguna aplicaci≤n parece ausente... 

    Los pasos para recuperar el registro antiguo son los siguientes: 

    1 Haga clic en el bot≤n "Inicio" y, despuΘs, en Apagar el sistema. 

    2 Haga clic en Reiniciar el equipo en modo MS-DOS y, despuΘs, haga clic en "Sφ". 

    3 Cambie al directorio de Windows. Por ejemplo, si su directorio de Windows es C:\Windows, deberß escribir:

    cd c:\windows 

    4 Escriba los siguientes comandos y presione ENTRAR despuΘs de cada uno. (Observe que System.da0 y User.da0 contienen el n·mero cero).

    attrib -h -r -s system.dat 

    attrib -h -r -s system.da0 

    copy system.da0 system.dat 

    attrib -h -r -s user.dat 

    attrib -h -r -s user.da0

    copy user.da0 user.dat 

    5 Reinicie su equipo.

    Con esto conseguiremos restaurar el ·ltimo registro que carg≤ correctamente nuestra pcera. 

      

    ┐? Almacenamiento de datos en el registro. 

    No podemos guardar lo que gustemos en el registro, hay unos lφmites tΘcnicos y fφsicos al tipo y tama±o de datos que una aplicaci≤n puede guardar en el registro, existen ciertas lφneas maestras a seguir para promover la eficiencia del sistema. Una aplicaci≤n puede almacenar informaci≤n sobre configuraciones y de inicializaci≤n en el registro pero otros tipos de datos deben ser guardados en otro sitio.  

    Generalmente los datos consistentes en mßs de 2KB deben guardarse como un archivo usando una "Key" que se refiera a la localizaci≤n de estos datos, este mismo proceso debe seguirse para evitar duplicar grandes cantidades de datos en el registro. 

    Nunca se debe guardar en el registro c≤digo binario ejecutable. 

    Un "Value" ocupa mucho menos espacio que una "Key", por esto y para economizar espacio una aplicaci≤n puede agrupar datos de carßcter similar y guardar la estructura como un "Value" mejor que guardarla en "Keys" separadas, si se usa este mΘtodo es aconsejable pasar los datos a binario para evitar incompatibilidades. 

    Ademßs y para guardar un orden diferenciaremos, a la hora de meter un dato al registro, entre dos categorφas de datos, informaci≤n de la computadora e informaci≤n del usuario, gracias a esta diferenciaci≤n una aplicaci≤n puede soportar m·ltiples usuarios, localizar informaci≤n acerca de un usuario especφfico a travΘs de una red y usar la informaci≤n personalizada en distintas localizaciones permitiendo asφ que la localizaci≤n del perfil de un usuario sea totalmente independiente. 

    Por ejemplo cuando una aplicaci≤n es instalada puede guardar los datos referentes al ordenata bajo HKEY_LOCAL_MACHINE. Puede crear "Subkeys" para el nombre de la compa±φa, nombre del producto, versi≤n, etc. : 

       HKEY_LOCAL_MACHINE\Software\NakarkoSoft\Expediente\3.0

      

    La apliaci≤n puede guardar la informaci≤n referente al usuario bajo la "Key" HKEY_CURRENT_USER, como en el ejemplo siguiente:  HKEY_CURRENT_USER\Software\NakarkoSoft\Expediente\3.0\User\karlitoxZ\

    ┐? Hands On ;P Modificando el registro manualmente. 

    Esto es muy sencillito, tanto como cambiar de nombre a una carpeta mediante el "Explorador" o cambiar las propiedades de un archivo con el men· contextual. 

    Como esto se hace mßs fßcil de entender grßficamente os pongo un ejemplito pero antes de nada tened muy en cuenta quΘ es lo que vßis a modificar, nunca modifiquΘis algo que no sabΘis para quΘ sirve o de lo contrario... las claves que menos peligro tienen son las claves que encontramos dentro de las "Subkeys" \Software por lo que ahφ va un ejemplillo con una de ellas: 

    [HKEY_CURRENT_USER\Software\NukeNabber 2.0\Options] {keys y Subkeys} 

    "savewindowpos"="0" {values, 1=True 0=False} 

    "runminimized"="1" 

    "usesystray"="1" 

    "stayontop"="0" 

    "killportscan"="1" 

    "client"="1" 

    "Services0"="mirc" 

    "langdesc"="Spanish" 

    "langnum"="4" 

    En esta ramita nos encontramos con opciones del NukeNabber personalizables a travΘs de sus men·s, un 1 nos indica que la opci≤n estß "encendida" y un 0 pues lo contrario. Tenemos marcada la opci≤n de "runminimized" con lo que el programa trabaja minimizado, tenΘis aquφ un ejemplo de "Value" en binario que inmediatamente vamos a cambiar para que el programa no curre minimizado. El tema serφa de la siguiente manera: 

    1 Abrimos el Regedit.exe alojado en C:\Windows. 

    2 Click en HKCUα Software α NukeNabber2.0 α Options. 

    3 Doble-Click en el "Value" a cambiar, en este caso "runminimized". 

    4 Nos aparece una ventanita donde tenemos nombre de valor e informaci≤n del valor, pulsamos en lo segundo e introducimos un 0 para anular esa opci≤n y le damos al Enter. 

    5 Pulsamos F5 para actualizar el registro.

    Sencillo no? Pues a jugar un poquito... Cambiar de nombre a una "Subkey" es todavφa mßs sencillo, idΘntico proceso al de cambiar de nombre a una carpeta en el "Explorador". 

    Se me habφa olvidado, tambiΘn podemos modificar la informaci≤n del registro a travΘs de archivos *.reg, haciendo doble-click sobre ellos, dando al men· contextual y eligiendo "Combinar" o abriendo el Regedit.exe y pulsando en el men· "Registro" α "Importar archivo del registro" la informaci≤n que el *.reg contiene se introducirß en nuestro registro.  

    ┐? C≤mo modificar el registro mediante una aplicaci≤n (para programadores). 

    Antes de meter informaci≤n al registro una aplicaci≤n debe abrir o crear una "Subkey" apoyßndose en las "Keys" predefinidas, los proggies usan las funciones RegOpenKey o RegOpenKeyEx para abrir una "Key" o "Subkey" y las funciones RegCreateKey o RegCreateKeyEx para crear una "Subkey". 

    Una apliaci≤n puede usar la funci≤n RegCloseKey para cerrar una "Subkey" y escribir los datos en el registro, el proceso de escribir los datos puede no ser inmediato y los datos pueden estar en cachΘ unos segundo antes de ser volcados al disco duro, para un volcado inmediato se usa la funci≤n RegFlushKey, lo malo es que esta funci≤n chupa muchos recursos y debe ser usada s≤lo en caso de que sea absolutamente necesario. 

    Para escribir los datos de un "Value" dentro de una "Sub/Key" una aplicaci≤n puede usar las funciones RegSetValue o RegSetValueEx, la primera de las funciones s≤lo trabaja con cadenas ("Values" de tipo REG_SZ), la segunda por el contrario puede escribir "Values" con cualquier tipo de datos. Estas dos funciones pueden crear una "Subkey" y su o sus "Values" al mismo tiempo. 

    Para borrar un "Value" de una "Sub/Key" usamos la funci≤n RegDeleteValue, para borrar una "Sub/Key" usamos la funci≤n RegDeleteKey, no se pueden introducir "Values" o "Subkeys" dentro de una "Key" borrada como es l≤gico... 

    Para cambiar la informaci≤n sobre la seguridad de una "Sub/Key" podemos usar la funci≤n RegSetKeySecurity. 

      

    ┐? Obtener informaci≤n del registro manualmente. 

    Sencillito sencillito, basta con darse un rutecillo por el registro con el Regedit.exe y ver quΘ es lo que tenemos en cada rama, como darse una vueta por alg·n ftpwarez con el CuteFtp. 

    Una buena cosa que nos permite el Regedit es "exportar archivo del registro" (men· registro), gracias a esta opci≤n podemos coger cualquier rama de nuestro registro, pasarla a un archivo *.reg y compartir esta ramita con nuestros compis, esto de la exportaci≤n es muy interesante sobre todo si te das una vuelta por las "Subkeys" de Software y compartes tus registered con los demßs, vamos a ver un ejemplito y asφ comparto algo con vosotros...que amar es compartir.... 

    1 Abrimos el Regedit.exe y nos colocamos en la rama del registro que queremos enficherar. 

    2 En el men· de Registro, Exportar archivo del Registro. 

    3 Se nos abre una ventanita de esas de Save As, en ella elegimos d≤nde y con quΘ nombre vamos a guardar nuestra ramita, ademßs en la parte inferior de la ventana tenemos la opci≤n "Rango de Exportaci≤n", si elegimos "Todo" haremos una copia de todo el registro, en cambio si elegimos rama seleccionada pues eso, copiamos s≤lo la rama que queremos copiar. 

    4 Ya estß todo guardadito, ahora vamos a ver quΘ co±o tiene el *.reg, estos archivos son modificables mediante cualquier editor de textos (notepad p.ej.).

    Aquφ tenΘis un ejemplo de lo que se ve al hacer esto, seguro que os sirve de algo ;P 

    REGEDIT4 

    [HKEY_CURRENT_USER\Software\Nico Mak Computing\WinZip\WinIni] 

    "win32_version"="7.0" 

    "Name"="karlitoxZ (PNK)" 

    "SN"="EA461EF8" 

    Por si hay alg·n despistado esto es el registro del Winzip 7.0... 

      

    ┐? Obtener informaci≤n del registro mediante una aplicaci≤n (para programadores) 

    Una aplicaci≤n para coger informaci≤n del registro va recorriendo todas las "Subkeys" de una "Key" hasta que encuentra la que busca y recoge los datos del "Value" o de los "Values" asociados al primero. 

    Una aplicaci≤n puede usar las funciones RegEnumKey o RegEnumKeyEx para enumerar las "Subkeys" de una "Key" determinada, la primera funci≤n nos devuelve s≤lo la "Subkey" mientras que la segunda nos devuelve tambiΘn sus componentes. 

    Para obtener datos concretos de una "Key" determinada recurrimos a la funci≤n RegQueryInfoKey. 

    Con la funci≤n RegGetKeySecurity obtendremos una descripci≤n de las caracterφsticas de seguridad de esa clave. 

    La funci≤n RegEnumValue nos sirve para enumerar los "Values" de una "Key" dada y las funciones RegQueryValue y RegQueryValueEx nos darßn el contenido del "Value" de una "Key" determinada. 

      

    RegEnumValue es llamada para determinar los nombres de los "Values" y RegQueryValueEx para obtener los datos contenidos en los "Values" de nombre sacado con RegQueryValue. 

    Cuando una aplicaci≤n guarda parte de la informaci≤n del registro en un archivo separado de Θste nos encontramos con el problema de cargar esta informaci≤n desde el registro cuando sea necesario, para este proceso nos encontramos con RegSaveKey que nos permite guardar una "Key" con sus "Subkeys" y "Values" en un archivo *.reg y con las funciones RegLoadKey para pasar el contenido del archivo *.reg al registro (RegUnLoadKey nos sirve para devolver el registro al estado anterior al RegLoadKey), RegReplaceKey que modifica una rama del registro seg·n defina el archivo *.reg y RegRestoreKey que devuelve a una rama del registro los valores que determina el fichero *.reg. 

     Poca cosa mßs sobre este tema, para hacer esto mßs tragable he omitido las estructuras de cada una de las funciones, si para alguien son de interΘs y no tiene posibilidad de obtenerlas que me emaile y se las envφo ASAP. 

      

    ┐? Algunos detallitos de windown modificables gracias al registro.. 

    Aquφ tenΘis unos cuantos trukillos para que esto funcione mejor o deberφa decir que funcione menos mal? Y algunas tonterφas que por lo menos a mi hacen que algunas cosas de w95 me molesten un poquito menos... 

    1- Mejor rendimiento del disco duro: esto arregla un BUG de la primera versi≤n de w95, vamos a la clave HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Fstemplates\Server, aparecen dos Values cuyos datos estßn al revΘs, debemos poner en NameCache 40 00 00 00 y en PathCache a9 0a 00 00, en versiones de w95 superiores a la OSR2 los valores estßn bien puestos, no hay que cambiarlos pero para que el tema funcione y nuestro HD vaya algo mßs rßpido debemos por ·ltimo ir a Panel de Control α Sistema α Rendimiento α Sistema de Archivos α Disco Duro y allφ tenemos que poner funci≤n tφpica "Servidor de Red" y optimizaci≤n avanzada "Completa". 

    2- Eliminar elementos del men· ejecutar: Ejecuta el Regedit y ve a la rama Mipc\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU 3. Abre esta ·ltima carpeta y ya puedes eliminar los elementos que no quieras de la lista de la derecha. Aviso! no toques el primer elemento de la lista. Reinicia el equipo. 

    3- Refresco de ventanas automßtico: Ejecuta Regedit y ve a la rama HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Update, ahora pulsas el bot≤n derecho y eliges Modificar, cambiar el valor 01 por el de 00 y reiniciar el equipo. 

    4- Eliminar iconos "imposibles" de eliminar: Ejecuta el regedit y acΘrcate a HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Current\Version\Explorer\Desktop\Name\Space, borras lo que te sobre y reinicias. 

    5- Quitar la animaci≤n de las ventanas: esto nos ahorrarß un poquito de RAM, vamos a HKEY_CURRENT_USER\Control Panel\Desktop\WindowsMetrics. Creamos un nuevo "Value" de nombre MinAnimate, siendo su valor cero.  

    6- Aumentar la velocidad de los men·s desplegables: vamos a la rama HKEY_CURRENT_USER\Desktop, creamos un "Value" de nombre MenuShowDelay y le otorgamos un valor entre 0-10, un 7 es bastante bueno pero tu verßs.

    Y como estos nos podemos encontrar con 1000 trucos relacionados con el registro, con estos ya vale como ejemplito, yo me quedo con el del HD y la animaci≤n de las ventanas... 

     AgRaDeCiMiEnToS y EtZs: 

    Este texto es un "remix" de un mont≤n de libracos que he encontrado tirados por la red de redes y de articulillos sacados de mi colecci≤n de revistas, como estß claro a estas alturas no voy a descubrir nada nuevo sobre este tema pues todo estß dicho ya pero creo que era necesario un manual completo y en castellano con miras sobre todo a la ingenierφa inversa y a la programaci≤n. 

    Como nadie es perfecto seguro que en este texto por mucho que lo haya revisado habrß un mont≤n de errores, os agradecerφa me los hicierais llegar vφa email para poder corregirlos... 

    Principalmente me he basado en la Win32 Programmer┤s Reference y en el fantßstico texto sobre este tema que leφ en "MaMMon┤S" del que no dudΘ en copiar cuando me quedΘ en blanco ;P http://www.cybercity.hko.net/SanFrancisco/mammon  y que estß sacado de "The W95Registry" de John Woram (copi≤n que copia a copi≤n tiene 100 a±os de perd≤n ;P) y en un mont≤n de webs sobre windown95 donde la gente ense±a lo poco que sabe y lo mucho que cree saber... 

    Agradecimientos pues lo de siempre... 

    A los miembros del proyekto como siempre su compa±φa y ayuda... 

    Y esta vez y para variar pues a CaR19 sus clases "personalizadas" de hacking ;P y a +MaLaTTia toda la ayuda que en su momento me prest≤ en este largo camino de convertirme en +karlitoxZ íímile gracie bambino!! ;P 

    +karlitoxZ Mail : karlitox@hemspeed.com 

    +karlitoxZ irc = IRChispano - EFNet -> KarlitoxZ 

    +karlitoxZ web : http://pagina.de/proyektonakarko  

    Rekomendaciones
    Una buena recomendaci≤n serφa que estudiaras lo bßsico mßs a fondo de ensamblador con 29A o Aesoft y/o La universidad de Guadalajara, tambiΘn te recomendarφa (si eres asiduo a algo de programaci≤n) a darle un buen vistazo a este curso de Pascal (tambiΘn por la universidad de Guadalajara), ya que con estos cursos, vamos a tener aunque sea que aprender a programar (lo bßsico) en varios lenguajes. Y te recomiendo aprender a programar primero en este sencillo lenguaje de programaci≤n por Borland 

    ┐Donde puedo enkontrar mßs informaci≤n acerca de la ingenierφa inversa
    Un muy buen lugar para encontrar mucha informaci≤n es el sitio de FRAVIA, y dos sitios mu'buena onda son Crackstore.com (Por lo que me dijo el Webmaster de Crackstore, vuelve en septiembre con un servidor mßs rßpido) y WkT!. 

    Mis palabras finales
    Ojalß que este curso les haya sido de agrado, pues me averguenzo de los otros cursos que hice. Les mando saludos de mi parte a las siguientes personas : 

    WkT!, evangelion, Hot Byte, SYSmooh, +karlitoxZ, +ORC, +Fravia, tKC, DiabloDX, Soraya (Que mujer!!), Razzia, DMA-48,   y sobre todo al todopoderoso gigantesco SIGRID (esperamos que alg·n dφa escribas un tutorial para sense±ar todo lo que me has ense±ado!). Sin mencionar a mi mejor amigo Enrique Palacios. y A J. Hernandez. (Esperamos tu pßgina!), y a Saiya (Sigue jugando con tu PSI! vas bien!), Maureen, Anarquia, íceMaN. 

    En general dos cosas acerca de mφ: 

  • Me gusta ayudar, pero no exagero.
  • Soy un puto loco traumado de la  cabeza paranoico hasta los huesos.
  • SE lo que piensas, asφ que mueve tu tras-0 y manda un mail con preguntas (solo para ayudar a la labor, no aceptarΘ hazme cracks ni tipos asφ) o con mis posibles errores, ya que cualquier cosa que no se entienda y me manden un mail, los ayudarΘ cambiando este curso y agregando temas .., si quieres ejercitar un ejemplo claro de la teorφa de este curso es el programa Quick Install Maker 3.0 y puedes encontrarlo en http://www.marchale.com o el famoso Help Pad. Ejercita esto. Cualquier probleMilla visitA el hueco de Nuestra pßgInA Cool Por el web ubiCada en : http://kut.tsx.org, y si tienes suerte la verßs (si es que estos putos gringos no me la quitan de nuevo por 9 vez!!). Por ·ltimo, les regalo un truquillo que me regalo este chato mu'buena onda y que realmente admito que no sabφa -En las propiedades del m≤dem, en 'configuraci≤n del puerto',pon 'avanzadas', y en donde dice configuraci≤n extra agrega esto : 'S11=50' y quizßs le darßs un marcado 'UltraRßpido' a tu acceso telef≤nico a redes. 

    Maniac Pc 

    Sigrid_mapc@Hotmail.com  

    Kr@cKerZ United Team 99 

    Kayut99@Hotmail.com



    [ Entrada | Documentoz GenΘricoz | WKT TEAM Main Site ]
    [ Todo el ECD | x Tipo de Protecci≤n | x Fecha de Publicaci≤n | x orden AlfabΘtico ]