Blaze Media Pro 2001 revision I
(trovare molto facilmente il seriale)

Data

by "ZedTec"

 

04/05/2001

UIC's Home Page

Published by Quequero

 

Beh di tutorial c’è ben poco :) il resto del doc è un keygen che cmq  è valido dal momento che non ricordavo di avere sulla uic un keygen sulla generazioni di un seriale come questo (ovvero dal numero di serie dell’hdd)

 

....

E-mail: [email protected]

....

Difficoltà

(*)NewBies ( )Intermedio ( )Avanzato ( )Master

 

Trovare con un un minimo uso di SIce il seriale giusto


Blaze Media Pro 2001 revision I

(trovare molto facilmente il seriale)
Written by ZedTec


Introduzione

Questo tutorial e' stato scritto a tempo perso, visto l'insulso tipo di protezione che il software presenta, la validità (se esiste) del tut e' data dal sorgente per il seriale in HLA.

(grazie ad Alessandro che mi ha fornito la shareware)

P.S. la versione da me 'analizzata' e' la I, l'ultima che potete scaricare e', al momento in cui scrivo, la revision K, se qualcuno e' in possesso di questa, sarei grato se mi potesse mandare l'eseguibile, magari compresso con upx o simili

Tools usati

SoftIce

URL

www.blazemp.com

Notizie sul programma

Con questo programma potete, oltre che ad ascoltare file audio (mp3,wav...), convertire, oltre al classico wav/mp3 anche da wma/mp3, wav/ogg e viceversa.

Essay

Disassembliamo il programma con w32dasm, noteremo che non c'e' nessuna referenza alle stringhe, date un'occhiata alle funzioni importate...Risolto il mistero, si tratta di un programma in VB, cosa peraltro deducibiledal lentissimo avvio del prog in questione. Lanciamo il programma e premiamo F3 per far visualizzare la form di registrazione (oppure dal menu Help ---> Register) noterete che per la registrazione, c'e' il classico sistema nome/seriale...

La prima cosa che ho analizzato e' la generazione del ProductID. (cosa peraltro inutile, ma interessante). Con una dose di culo mostruosa, piazzai un breakpoint su ' getvolumeinformationa ' ossia una API che permette tra le varie cose, la lettura del seriale di una unità (disco fisso, in questo caso):

bpx getvolumeinformationa

vedrete che softice entrerà quando richiamerete la form di registrazione. Tramite un programma freeware (volumeid) che permette di cambiare a nostro piacimento(!) il numero seriale dell'hard-disk, ho fatto una prova, infatti ho cambiato quest'ultimo in 023D-73C0 (...lo so, sono megalomane) e richiamando la form di registrazione (disabilitando il breakpoint) ho visto che il ProductID era cambiato! Armatomi di pazienza e fogli di carta, ho provato a trovare una correlazione tra il numero seriale dell'hard-disk e il productID, dopo varie operazioni assurde, mi sono accorto che il productID non e' altro che il valore in decimale del seriale dell'HD, infatti questo e' dato in esadecimale (023D-73C0) e il prog lo trasforma in decimale:

023D-73C0 ---> 23D73C0 ---> 37581760 (ProductID)

..ora viene la parte più difficile (!), il seriale vero e proprio, oppure il RegistrationID (come lo chiama il prog). Essendo un programma in VB, non si hanno le referenze alle stringhe perchèil VB usa il formato unicode o s s i a, in poche parole, una lettera, spazio, lettera...

Entrando in SIce (ctrl+D), misi un breakpoint:

bpx __vbastrcat (sono due underscore)

riempii lo spazio per il seriale e poi cliccai su Enter Registration softice entrò in azione dentro la dll msvbvm60.

Il codice e' il seguente:

push ebp
mov ebp,esp
lea eax, [ebp+08]
push eax
push dword ptr [ebp+08]
push dword ptr [ebp+0c]
call [6610FE6C]
test eax,eax
jl 66047AF2
mov eax, [ebp+08] <--- qualcosa viene spostato in eax, cosa ?!
pop ebp
ret 008

...ora premete 5 volte F5, dopo con F10 arrivate all'istruzione pop ebp e scrivete

d eax

vedrete in formato unicode il seriale!

...il seriale che trovate, non tiene conto del seriale del hard-disk, di conseguenza funziona su hd diversi! Vista la semplicità di ciò ora creeremo un piccolo 'KeyTeller' con HLA che mostra il ProductID (il seriale dell'hard-disk in versione decimale) e il registrationId (in numero da TE trovato!!);

/* PURAMENTE A SCOPO DIDATTICO

Non mi assumo nessuna responsabilità
dell'uso di questa merda di sorgente.
Siete pregati di non distribuire né questo
né possibilmente l'eventuale eseguibile.*/

program keyz2; //diamo un nome al programma

#include("stdlib.hhf"); // classica referenza alle varie librerie

// qui vengono dichiarate le variabili
// e le procedure
// che dovranno contenere e prelevare
// i vari dati di GetVolumeInformation
// anche se a noi interessa solamente una :
// VolSerNum

static

GetLastError: procedure; external( "__imp__GetLastError@0" );

_GetVolumeInformation: procedure

(

nFileSystemNameSize: dword;
var lpFileSystemNameBuffer: var;

var lpFileSystemFlags: dword;

var lpMaximumComponentLength: dword;

var lpVolumeSerialNumber: dword;

nVolumeNameSize: dword;

var lpVolumeNameBuffer: var;

lpRootPathName: string

);

external( "__imp__GetVolumeInformationA@32" );

macro GetVolumeInformation

(

lpRootPathName,

lpVolumeNameBuffer,

nVolumeNameSize,

lpVolumeSerialNumber,

lpMaximumComponentLength,

lpFileSystemFlags,

lpFileSystemNameBuffer,

nFileSystemNameSize

);

_GetVolumeInformation

(

nFileSystemNameSize,

lpFileSystemNameBuffer,

lpFileSystemFlags,

lpMaximumComponentLength,

lpVolumeSerialNumber,

nVolumeNameSize,

lpVolumeNameBuffer,

lpRootPathName

)

endmacro;

static

RootPathName : string := "C:\";

VolNameBuf: char[ 256 ];

VolNameStr: string;

VolSerNum:dword; // A noi serve solamente questa!!

MaxCompLen:dword;

FileSysFlags: dword;

FSNameBuf: char[ 256 ];

FSNameStr: string;

serdec:string;

decimal:int32;

const

product:string:="ProductID:";

seriale:string:="RegistrationID: XXXX-XXXX"; // qui ci inserisci il seriale che TU hai trovato.

begin keyz2; //inizio programma

stralloc( 256 );

mov( eax,serdec ); // inizializziamo serdec in modo
// che possa contenere il seriale

GetVolumeInformation // preleviamo i dati

(

RootPathName,

VolNameBuf,

250,

VolSerNum,

MaxCompLen,

FileSysFlags,

FSNameBuf,

250

);

mov(VolSerNum,decimal); // trasformiamo il seriale
// da esadecimale in decimale
conv.i32ToStr(decimal,10,' ',serdec); // e da decimale in stringa
str.insert(product,serdec,0); // inseriamo nella stringa la variabile productr
str.cat(#10+seriale,serdec); // e la concateniamo con seriale, dandogli
// il ritorno a capo ( #10 )
win.MessageBox(0, // visualizziamo la messagebox
serdec, "ZedTec's BMP I [KeyTeller]", //visualizziamo la stringa, impostiamo il titolo
win.MB_ICONINFORMATION); // e ci mettiamo pure un'icona...

end keyz2; // fine programma

Potete ora compilarlo con :

hla -w nomefile

il parametro -w e' indispensabile in quanto facciamo riconoscere al compilatore che si tratta di un programma per win32 altrimenti lo compila per la console32 e ogni volta che verrà eseguito,
verrà aperta prima la shell dei comandi...

ZedTec

 

Note finali

Questo e' il meglio che sono riuscito a fare
 
Questo tutorial e' dedicato a:
- Michela per tutto.
- Francesca, anche se le cose non vanno mai come vorremmo, e
  soprattutto perche' chi visse sperando, morì...
  Mi ricorda tanto la mia ex-Francy…Che bella stronza che era :) NdQue
- Quei grandissimi figli di puttana della Lg Electronics che
  hanno reso aggiornabile il firmware del masterizzatore 
  dalla versione 1.5 .
  (io ho la 1.0, come cazzo faccio a farlo diventare 8x??)
- Randall Hyde per H.L.A e per rispondermi ogni qualvolta ho
  un problema.

Disclaimer

NON MI ASSUMO NESSUNA RESPOSABILITA' RIGUARDANTE IL CONTENUTO DI QUESTA PAGINA.