file_id.diz:
TEAM TSRh 2003 date: 08-08-2003
██▀▀▀▀▀▀▀▀▀▀▀█ ▀▀▀▀▓ █▀▀▀▀▀▀▀▀█ █▀▀█ █▀▀▀█
▓█ █▀█ █▀█ █ ▄ ▀ █ █ █▀█ ░ █ █ █ █ ░ █
▒▓▄█ ▓ █ █▄▄▓ █ ▀▀▀ ▓ █▄█ ▄▄▓ ▓ █▄█cXc▓
▒█ █ ▄▄▄▄ ▀█▀▀█ ▒█ █ █▄▄▄▄ ▒█ █ █CPH█
/ ░███ █ █▄▄█ █ ░█ █ █ ▄ █ ░███ █ ▄ █
/ ▒███ █▓▄▄▄▄▄▄▓█ ▒█▄█ █▄▄▄█ ▒███ █▄▄▄█
U-Wipe 2.5 Spanish Tutor
tutorial
U-Wipe_2.5_MD5_Spanish_Tutor.txt:
TSRh TeaM PROUDLY PRESENTS
U-Wipe 2.5 *Spanish Tutorial Parte I*
===============================================================================
==========================
[Product ] .................................................................
...............U-Wipe 2.5
[WebSite ] .................................................................
....
http://www.u-wipe.co
m
[Tools ] ..................Olly, PeiD, CryptoCal, Table Recognizer, Kanal
2.2, Damn Hash Calculator
[Protection] .......... ..........................Serial, MD5 (MD5 is a copyri
ght of RSA Data Security)
===============================================================================
==========================
Desde hace algún tiempo he venido viendo que muchos programas están migrando a a
lgoritmos de cifrado
esto para hacer uso de estos mismos en sus bloqueos para los sistemas de registr
os, muchos programas
utilizan actualmente algoritmos como MD5, SHA1, SHA160, RC4, RSA, Bl
owfish, TEA, Twofish, Rijndael, etc.
La documentación que existe respecto a estos algoritmos es muy poca he inin
telegible para aquellos a
quienes la matemática no fué su fuerte en el colegio. Esto mismo ha hecho que mu
chos crackers tambien
se preocupen por estar actualizados y tratar de entender los métodos de trabajo
de los mismos algoritmos
a fin de que los programadores vean que ningún sistema de seguridad es irrompibl
e a menos que no lo
divulguen y lo usen únicamente para sus ojos.
Nota: Esto está escrito para fines didácticos ni el Autor ni el Grupo TSRh se ha
cen responsables por el
mal uso que esta información pueda producir. Se solicita al lector que si este p
rograma le es útil pueda
adquirirlo, al programador indicamos que la publicidad de su sitio y su programa
es netamente gratuita.
INICIO:
Haciendo uso de las herramientas nos cercioramos que tipo de protección tiene es
te programa, vamos a la
carpeta en que lo tenemos instalado y damos clic derecho en el archivo con nombr
e uwipe.exe, seleccionamos
la opción que nos aparece en el menú contextual referente a Scan with PEiD,
este nos informa lo siguiente
Borland C++ 1999
En otras palabras este programa no ha sido empacado lo cual nos ahorra un gran t
rabajo y más letras.
Sabiendo esto cargamos nuestro debugger, previamente hemos copiado la dirección
en que el programa está
ubicado, esto lo hemos hecho mediante PEiD. Vamos a la opción File->Open de
Olly y pegamos la ruta de
nuestro programa, hacemos clic en Abrir y esperamos a que nuestro programa sea c
argado y automáticamente
se coloca en el OEP del programa...
00401578 > $ EB 10 JMP SHORT UWIPE.0
8;40158A
Seguidamente vamos a la opción Debug->Run y el programa se ejecuta, mostránd
onos una linda ventanita con
la opción de registro y nos dice que nuestro programa expirará en 15 di
as. Hagamos clic en el botón
Register, nos aparece otra ventana con cuatro TextBox, los cuales tene
mos que llenar con la información de
registro que nos puede ser enviada si ya hemos comprado el programa, en nuestro
caso los valores que
ingresaremos serán valores falsos, haciendo creer al programa que tenemos un ser
ial bueno el cual el
programa chequeará para compararlo con el verdadero (esto ya lo saben).
Los datos que ingresaremos serán...
First Name: ByTESCRK
Last Name: TSRh TEAM
ID: 20030808
En el ultimo campo vemos que el programa tiene predefinido el formato para ingre
so de información:
0000-0000-0000-000
48;-0000-0000-0000-00
8;0
Lo cual hace que nos de un escalosfrío en el cuerpo debido al tamaño del serial,
asumiendo como en otras
experiencias (me refiero al programa Nero Burning Rom) en donde el programa
no necesita los guiones y los
elimina el comparar los seriales los eliminaré quedando un valor menor 32 número
s
S/N: 00A10B20C30D40E50F60H70I80J9
;0K00
El cual se ajusta realmente a lo necesario en el campo S/N.
Hacemos clic en OK y bualá, el programa se cierra al comprobar que el serial es
falso. Entonces plan B.
Cargamos el programa repitiendo lo del inicio de este tutorial.
Luego que el programa ha cargado vamos a Olly y en cualquier espacio en la venta
na de Traceo hacemos clic
derecho y vamos a la opción del menú Search For->All referenced text st
rings, el Olly empieza a buscar
todas las referencias de texto, vamos bajando lentamente y prestando atenci
ón a las que se encuentran y
nos da pánico cuando vemos algunas referencias a algoritmos de inicialización de
algunos métodos
criptográficos (RSA, RSAMD2, RSAMD4, RSAMD5, RSAMD2RSA, RSASHA, etc.)
Nos encontramos con la linea
0041A39B MOV EDX,UWIPE.004C79E6 " Your tria
l version has expired "
La cual nos sería útil si nuestro programa ya estuviera expirado. Seguimos
bajando y vemos algunas lineas
que nos hacen erizarnos más...
Microsoft Base Cryptographic Provider v1.0
Arriba de estas lineas tenemos las referencias al registro en donde quizá se gua
rdan nuestros valores al
ser correctos, en este caso no lo son y por ende es casi cierto que no están all
í. Las lineas son las
siguientes...
0041EB3A |. BA F09D4C00 MOV EDX,UWIPE.00
4C9DF0 ; ASCII "Software\NRLab\U-Wipe\"
0041EBC9 |. BA 0B9E4C00 MOV EDX,UWIPE.0&
#48;4C9E0B ; ASCII "ID"
0041EC24 |. BA 0E9E4C00 MOV EDX,UWIPE.00
4C9E0E ; ASCII "OwnerName"
0041EC7F |. BA 189E4C00 MOV EDX,UWIPE.00
4C9E18 ; ASCII "OwnerLastName"
Hacemos doble clic en la primer linea... apaceremos aqui...
0041EB34 |. 66:C743 10 1400 MOV WORD PTR DS:
[EBX+10],14
0041EB3A |. BA F09D4C00 MOV EDX,UWIPE.0&
#48;4C9DF0 ; ASCII "Software\NRLab\U-Wipe\"
0041EB3F |. 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4]
0041EB42 |. E8 DDBF0900 CALL UWIPE.00
;4BAB24
Abajo tenemos otras linea iguales y aparece incluso la notación PI bajo ellas (3
.1415926535), curioso no
Las lineas son...
0041F04D |. BA 809E4C00 MOV EDX,UWIPE.
48;04C9E80 ; ASCII "Software\NRLab\U-Wipe\
4;
0041F0B0 |. BA 9B9E4C00 MOV EDX,UWIP
E.004C9E9B ; ASCII "ID"
0041F0E2 |. BA 9E9E4C00 MOV EDX,UWIPE.
48;04C9E9E ; ASCII "OwnerName"
0041F114 |. BA A89E4C00 MOV EDX,UWIPE.
48;04C9EA8 ; ASCII "OwnerLastName"
...
...
0041F23C |. B8 319F4C00 MOV EAX,UWIPE.0&
#48;4C9F31 ; ASCII "3.1415926535"
Por curiosidad ponemos un BP con F2 en esas direcciones...
Abajo nos aparecen algunos valores con el mismo formato que nuestro serial, será
n valores blacklisted...
con tantos escalofríos que me he dado no quiero ni comprobarlos.
Ok, vamos a regresar a nuestro programa y hacemos clic en Register he ingresamos
los valores nuevamente,
una vez ingresados hacemos clic en Ok y Bravo!!! el programa se para en la direc
ción de la notación PI.
0041F236 |. 8D53 04 LEA EDX,DWORD PTR DS:[EBX+4]
0041F239 |. FF46 1C INC DWORD PTR DS:[ESI+1C
]
0041F23C |. B8 319F4C00 MOV EAX,UWIPE.0&
#48;4C9F31 ; ASCII "3.1415926535"
<--Aqui--
0041F241 |. 66:C746 10 1400 MOV WORD PTR
DS:[ESI+10],14
0041F247 |. 66:C746 10 2000 MOV WORD PTR DS:
[ESI+10],20
0041F24D |. 894D F8 MOV DWORD PTR SS:[EBP-8],ECX
Ahora a tracear con F8... al ir traceando vemos que nada está sucediendo en los
registros, pero...
0041F2BD |. 8D45 E8 LEA EAX,DWORD PTR SS:[EBP-18]
0041F2C0 |. BA 02000000 MOV
EDX,2
0041F2C5 |. E8 3EBA0900 CALL UWIPE.00
;4BAD08
0041F2CA |. FF4E 1C DEC DWORD PTR DS:[ESI+1C]
0041F2CD |. 8D45 EC LEA EAX,DWORD PTR SS:[EBP-14]
Al pasar el Call que se encuentra en 0041F2C5 nos aparece la siguien
te cadena en EDX...
<----PI----><-Name-> <-LastN-><--ID--&
#62;
EDX=0149FEB4 3.1415926535ByTESCRK TSRh TEAM2003
0808
^
Space
Lo que nos indica que este es el string del cual debemos partir para generar un
serial válido. Seguimos
traceando...
Vemos que el programa hace alguna operación en...
0041F31D |. 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]
0041F320 |. E8 9BFAFFFF CALL UWIPE.0041E
DC0 <---En este lugar hace algo---
0041F325 |. 8D55 E4 LEA EDX,DWORD PTR SS:[EBP-1C]
0041F328 |. 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4]
0041F32B |. E8 08BA0900 CALL UWIPE.0
04BAD38
0041F330 |. FF4E 1C DEC DWORD PTR DS:[ESI+1C
]
0041F333 |. 8D45 E4 LEA EAX,DWORD PTR SS:[EBP-1C]
0041F336 |. BA 02000000 MOV EDX,
2
0041F33B |. E8 C8B90900 CALL UWIPE.0
04BAD08 <---Aqui nos devuelve un nuevo valor en EDX
0041F340 |. 8D53 10 LEA EDX,DWORD PTR DS:[EB
X+10] <---En la pila vemos nuestro valor falso
0041F343 |. 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4] <
;---En la pila vemos el serial verdadero
0041F346 |. E8 A1BA0900 CALL UWIPE.0
04BADEC <---Hace la comparación
0041F34B |. 84C0 TEST AL,AL
<---Si no son iguales 0 (zero) de lo contrario 1
0041F34D |. 0F85 918A0000 JNZ UWIP
E.00427DE4 <---Vamos afuera y todo Ok.
*┐Como ver la pila? Hacer clic derecho en el valor de los registros EAX,ECX,EDX,
etc. y hacer clic en la opción del
menú contextual referente a Follow in Stack*
En nuestro caso ha devuelto zero, veamos que sigue haciendo el programa (tracean
do)... el programa va comparando
todos los seriales y si ya nos dimos cuenta sabremos que estos son seriales váli
dos de tipo HardCoded.... y
llegamos a este lugar...
00427DE2 |. 74 1F JE SHORT UWIPE.00427E03
<---Si ningún serial es igual vamos a 00427E03
00427DE4 |> B0 01 MOV AL,1
<---De lo contrario AL recibe el valor de 1
00427DE6 |. BA 02000000 MOV EDX,2
00427DEB |. 50 PUSH EAX
00427DEC |. 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4]
00427DEF |. FF4E 1C DEC DWORD PTR DS:[ESI+1C]
00427DF2 |. E8 112F0900 CALL UWIPE.0
04BAD08
00427DF7 |. 58 POP EAX
00427DF8 |. 8B16 MOV EDX,DWORD PTR DS:[ESI]
00427DFA |. 64:8915 00000000
MOV DWORD PTR FS:[0],EDX
00427E01 |. EB 1D JMP SHORT UWIPE.0042
7E20
00427E03 |> 33C0 XOR EAX,EAX
<---Venimos aquí y EAX recibe el valor de 0 (zero)
00427E05 |. BA 02000000 MOV EDX,
2
00427E0A |. 50 PUSH EAX
Si quisieramos crackear el programa ese seria el lugar a parchar...
Unicamente cambiariamos los bytes 33C0 a B001 lo cual le indicar
ía al programa que el serial es válido siempre...
pero nuestro objetivo es otro... y por el momento ni siquiera sabemos como se ca
lcula el serial... y el programa se
ha cerrado nuevamente.
Continuará....
===============================================================================
==========================
ByTESCRK (bytescrk@mailandnews.com)
[TSRh TeaM]
08.08.2002, 01:45am