Benvenuto! Per postare e godere delle funzionalità del forum registrati, occorrono pochi secondi ed è gratis!

Estrarre GUID di Windows

WarRock Hacks Coder
Messaggi: 940
Discussioni: 47
Registrato: 03-2011
Mix: 0
Rieccoci qua con una nuova storiella (per la gioia di Digger Blush)
Dunque, giorni fa postai un tool per estrarre il product key di windows, e forte del successo che ha ottenuto quel tool oggi ve ne presento un altro...
Ma andiamo per gradi...
Rispondendo alla domanda di uno di voi che mi chiedeva dove fosse memorizzato il PKey gli risposi che stava qui -> HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\Windows NT\\CurrentVersion, ed è la chiave: "DigitalProductID".
Ma dando un'occhiata a quell'indirizzo, vedrete qualcosa del genere:
[Immagine: immagineqp.png]

Si si lo so che state pensando: "OMG e che sono tutti quei numeri??"
Non preoccupatevi, a sinistra trovate i nomi, che sono abbastanza intuitivi Asd Asd

Come vedere il 90% delle informazioni su un SO sono la, cavolo ecco come fanno programmi come CCleaner e Speccy a sapere tutto sul vostro pc....disgraziati invasoriiiii Blush

Ebbene adesso vedremo come estrarre uno di quei valori, in particolare quelli di tipo stringa (REG_SZ), nel mio tutorial estrarremo la BuildGUID ma basterà cambiare 2 paroline nel source per estrarre un qualunque altro valore di quelli, fermo restando che siano REG_SZ

Dunque cominciamo dal source:
    C++ Programming
  1. #include <Windows.h>
  2. #include <iostream>
  3.  
  4. using namespace std;
  5.  
  6.  
  7. int main()
  8. {
  9. HKEY hRegistryKey; //Ci servirà per accedere al registro
  10. BYTE *Extracted = 0; //Dove salvare il valore estratto
  11. DWORD DataLength; //Lunghezza chiave da estrarre
  12. char buffer[164]; //Variabile finale che conterrà il valore, utilizzabile in tutto il programma
  13.  
  14. const char NT_CURRENT[] = "SOFTWARE\\MICROSOFT\\Windows NT\\CurrentVersion";
  15.  
  16. if( RegOpenKeyEx(HKEY_LOCAL_MACHINE, NT_CURRENT,
  17. REG_OPTION_NON_VOLATILE, KEY_QUERY_VALUE | 0x0100,
  18. &hRegistryKey) == ERROR_SUCCESS )
  19.  
  20. {
  21. DataLength = 164;
  22.  
  23. //Allochiamo memoria
  24. Extracted = new byte[DataLength];
  25.  
  26. //Inizializziamo la memoria
  27. memset(Extracted, 0, DataLength);
  28.  
  29. //Estraiamo il valore della chiave
  30. RegQueryValueEx(hRegistryKey, "BuildGUID",NULL, NULL, Extracted, &DataLength);
  31.  
  32. //lo copiamo in un buffer
  33. memcpy(buffer,Extracted,164);
  34. }
  35.  
  36. cout <<"BuildGUID: " << buffer << endl;
  37. system("pause");
  38. return 0;
  39. }


Allora, gli "include" credo che lo sappiate a che servano, a includere nel progetto i file contenenti le API (particolari funzioni) utilizzate nel progetto;
Nella prima parte dichiariamo e inizializziamo tutte le variabili che ci serviranno e poi andiamo alla parte interessante:
    C++ Programming
  1. RegOpenKeyEx(HKEY_LOCAL_MACHINE, NT_CURRENT,
  2. REG_OPTION_NON_VOLATILE, KEY_QUERY_VALUE | 0x0100,
  3. &hRegistryKey)


Apriamo il registro posizionandoci su HKEY_LOCAL_MACHINE e alla subkey NT_CURRENT che abbiamo definito come:
    C++ Programming
  1. const char NT_CURRENT[] = "SOFTWARE\\MICROSOFT\\Windows NT\\CurrentVersion";


Cavolo quello è proprio il percorso della nostra chiave, deduciamo quindi che quando vogliamo estrarre un qualsiasi valore da una qualsiasi posizione dobbiamo ricordarci di settare il percorso nella subey e nella chiave primaria (il primo parametro) se dobbiamo andare a cercare in "HKEY_CLASS_ROOT, HKEY_CURRENT_USER",HKEY_LOCAL_MACHINE" ecc...
Proseguiamo...
Se l'apertura del registro e della subkey è andata a buon fine:
    C++ Programming
  1. DataLength = 164;
  2.  
  3. //Allochiamo memoria
  4. Extracted = new byte[DataLength];
  5.  
  6. //Inizializziamo la memoria
  7. memset(Extracted, 0, DataLength);
  8.  
  9. //Estraiamo il valore della chiave
  10. RegQueryValueEx(hRegistryKey, "BuildGUID",NULL, NULL, Extracted, &DataLength);
  11.  
  12. //lo copiamo in un buffer
  13. memcpy(buffer,Extracted,164);


Beh non c'è molto da dire, è abbastanza commentato Blush
E il programma finisce con:
    C++ Programming
  1. cout <<"BuildGUID: " << buffer << endl;
  2. system("pause");
  3. return 0;


La prima riga stampa il valore del buffer contenente il valore della chiave estratta...
La seconda è una funzione carina di "windows.h" che scrive "Premi un tasto per continuare...", alla pressione di un qualunque tasto prosegue trovando return...

Bene così abbiamo estratto la BuildGUID..
Ma non ho detto ancora cos'è!! Blush
Ebbene è un valore univoco che cambia da pc a pc...
oooooo myyyyyy goddddddd
come un numero di matricola?!?!? Esattooooo
100 punti a chi di voi lo ha pensatoo Wink
Vi siete chiesti a cosa potrebbe servire??
Beh vi siete chiesti come fanno quelli che rilasciano gli hack vip a pagamento a farli funzionare su uno e un solo pc??
Con la guid, braviiiiii Smile

Vi ricordate quando vi ho detto che bastava cambiare un paio di paroline per estrarre un altro valore anzichè la guid?
Smemorati, ve lo eravate già dimenticati -.-
Comunque, ammettiamo che non vogliamo la guid ma quel ProductID...
E mo come famoo?? Oddio mi sento in crisii, non ci riuscirò maiiii Sad Sad
E no belli, qua casca l'asino Blush
Basta modificare:
    C++ Programming
  1. RegQueryValueEx(hRegistryKey, "BuildGUID",NULL, NULL, Extracted, &DataLength);


In:
    C++ Programming
  1. RegQueryValueEx(hRegistryKey, "ProductID",NULL, NULL, Extracted, &DataLength);


ed è fatta, poi se vogliamo fare le cose per bene cambiamo pure:
    C++ Programming
  1. cout <<"BuildGUID: " << buffer << endl;


in:
    C++ Programming
  1. cout <<"ProductID: " << buffer << endl;


cosi vi apparirà sullo schermo:
Codice:
ProductID: [il vostro product id]
Premi un tasto per continuare...

Beh che dire, direi che come storiella è abbastanza soddisfacente, almeno per voi, ma non per me...sapete che faccio???
No no, non chiudo senza postare... ci avete provato eh? Blush
Invece vi posto tutto il source, in vc++ 2010, ma vi basta fare un nuovo progetto console vuoto ed aggiungere il file main.cpp del mio progetto Tounge

Download:

[Per vedere i link devi REGISTRARTI.]


Dopo una storiella del genere (cavolo è da un ora che scrivo Blush) ci vogliono dei commenti altrettanto validi Tounge

Vi aspetto numerosi Smile

Alla prossima,
Zio Skyline
Blush

25/08/2011, 16:13
#1
Cerca

Il criceto mannaro
Messaggi: 3,536
Discussioni: 201
Registrato: 03-2011
Mix: 3,737
ma che bella storiella Smile beh ora che scrivi storielle cosi carine io non servo piu Asd


digger
25/08/2011, 22:19
#2
Cerca

WarRock Hacks Coder
Messaggi: 940
Discussioni: 47
Registrato: 03-2011
Mix: 0
(25/08/2011, 22:19)digger Ha scritto:

[Per vedere i link devi REGISTRARTI.]

ma che bella storiella Smile beh ora che scrivi storielle cosi carine io non servo piu Asd

E no caro mio, visto che ci ho messo un ora a scrivere quella storiella (a tal proposito non oso immaginare quanto ci stai tu Asd) e dopo 6 ORE ricevo una sola risposta e 15 visite la prossima volta metto descrizione sintetizzatissima (stile annuncio sul giornale) e download del file già compilato, e se mi va uno screen e basta..

Sono molto deluso Sad

25/08/2011, 22:25
#3
Cerca

Iscritto
Messaggi: 2,216
Discussioni: 102
Registrato: 03-2011
Mix: 0
nooo ok faccio il secondo commento... bravo sky Asd

25/08/2011, 22:33
#4
Cerca

WarRock Hacks Coder
Messaggi: 940
Discussioni: 47
Registrato: 03-2011
Mix: 0
(25/08/2011, 22:33)patoffo000 Ha scritto:

[Per vedere i link devi REGISTRARTI.]

nooo ok faccio il secondo commento... bravo sky Asd

Asd

25/08/2011, 22:40
#5
Cerca

Iscritto
Messaggi: 891
Discussioni: 58
Registrato: 03-2011
Mix: 0
eh... io te lo avevo detto.. hai perso il mio favore (cmq ... bravo Asd storielle intriganti Asd Asd )

Ho sentito dire che la prossima la fai col video... :rolleyes::rolleyes:

25/08/2011, 22:59
#6
Cerca

WarRock Hacks Coder
Messaggi: 940
Discussioni: 47
Registrato: 03-2011
Mix: 0
(25/08/2011, 22:59)Luxor Ha scritto:

[Per vedere i link devi REGISTRARTI.]

eh... io te lo avevo detto.. hai perso il mio favore (cmq ... bravo Asd storielle intriganti Asd Asd )

Ho sentito dire che la prossima la fai col video... :rolleyes::rolleyes:

Chi è che lo ha spettegolato?? :@ Mi ha rovinato la sorpresa Sad

25/08/2011, 23:15
#7
Cerca

il vip member pro&lt;!
Messaggi: 2,120
Discussioni: 156
Registrato: 04-2011
Mix: 0
m-m-ma allora digger non servira piu.........cmq bravo skyline@69

26/08/2011, 11:09
#8
Cerca

WarRock Hacks Coder
Messaggi: 940
Discussioni: 47
Registrato: 03-2011
Mix: 0
(26/08/2011, 11:09)andry700 Ha scritto:

[Per vedere i link devi REGISTRARTI.]

m-m-ma allora digger non servira piu.........cmq bravo skyline@69

E' bastata una piccola lamentela per saltare da 15 a 65 visite?? Asd

26/08/2011, 11:41
#9
Cerca

Coder
Messaggi: 633
Discussioni: 57
Registrato: 04-2011
Mix: 0
ahahahah l'onnipotente skyline Asd cmq bravo Happywide +1

26/08/2011, 13:05
#10
Cerca

WarRock Hacks Coder
Messaggi: 940
Discussioni: 47
Registrato: 03-2011
Mix: 0
(26/08/2011, 13:05)Cato97 Ha scritto:

[Per vedere i link devi REGISTRARTI.]

ahahahah l'onnipotente skyline Asd cmq bravo Happywide +1

ahahahahah

Stavo pensando di fare un piccolo addy downloader tutto nostro (cioè mio Asd) visto che in giro stanno andando forte, così non posto più il logger, e non devo preoccuparmi che sia 'presentabile' Asd Asd

E si torna a lavorare col .NET framework (c#) ed sql Smile

26/08/2011, 13:50
#11
Cerca

Coder
Messaggi: 633
Discussioni: 57
Registrato: 04-2011
Mix: 0
cioè crei un programmino che ogni tot di tempo scarica la lista degli addy di warrock? figo!

26/08/2011, 14:09
#12
Cerca

WarRock Hacks Coder
Messaggi: 940
Discussioni: 47
Registrato: 03-2011
Mix: 0
(26/08/2011, 14:09)Cato97 Ha scritto:

[Per vedere i link devi REGISTRARTI.]

cioè crei un programmino che ogni tot di tempo scarica la lista degli addy di warrock? figo!

No ogni tot tempo, quando vuoi lo apri e ti prendi gli address disponibili in quel momento (resi a disposizione da me) senza avere addy logger e dover aprire warrock Smile

26/08/2011, 14:32
#13
Cerca

Coder
Messaggi: 633
Discussioni: 57
Registrato: 04-2011
Mix: 0
si si... io per "ogni tot di tempo" intendevo che ad esempio ad ogni aggiornamento di warrock veniva aggiornata la lista degli addy e quindi quando la scaricavi, ti diceva lista aggiornata all'aggiornamento del gg/mm/aaaa... nn so se mi sono spiegato xD cmq ho capito

26/08/2011, 14:56
#14
Cerca

Il criceto mannaro
Messaggi: 3,536
Discussioni: 201
Registrato: 03-2011
Mix: 3,737
puoi mettere su un webservice e interrogarlo con il client Smile


digger
26/08/2011, 14:56
#15
Cerca


Discussioni simili
Discussione Autore Risposte Letto Ultimo messaggio
  Editor e Compilatore in C, Windows/Linux Lelep0w4 0 1,436 15/10/2016, 11:34
Ultimo messaggio: Lelep0w4
  Riassunto Conferenza Windows 10! Giniu 1 2,019 24/01/2015, 22:06
Ultimo messaggio: digger
  Windows 8 chi l'avrebbe detto digger 22 6,393 05/09/2014, 18:33
Ultimo messaggio: digger



Utenti che stanno guardando questa discussione: 1 Ospite(i)