|
|
 |
ESTUDIO COLECTIVO DE DESPROTECCIONES
Última Actualizacion:
25/10/2001
|
 |
|
Programa |
ToggleMouse
v3.4.3 |
W95 / W98 / NT |
Descripción |
Programa que genera utilidades para el mouse |
Tipo |
Trial de 45 dias |
Tipo de Tutorial |
[X]Original, []Adaptación, []Aplicación, []Traducción |
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 |
Grupo |
KuT |
Fecha |
25 de Agosto de 1999 |
INTRODUCCION
|
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 :
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.
|
CONCEPTOS
|
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 comenzar?
|
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. . .
|
Conocimientos Básicos 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 ..
|
|
Enfatizando con 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 :
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 ATAQUE
|
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í:
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 | Documentos Genéricos | WkT! Web Site ]
|
[ Todo el ECD | x Tipo de Protección | x Fecha de Publicación | x Orden Alfabético ]
|
|
(c)
Whiskey Kon Tekila [WkT!] - The Original Spanish Reversers.
Si necesitas contactar con
nosotros
, lee
esto
antes e infórmate de cómo puedes
ayudarnos |
|
|
|
|
|