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


Messaggi in questa discussione
Estrarre GUID di Windows - da Skyline@69 - 25/08/2011, 16:13
[Nessun oggetto] - da digger - 25/08/2011, 22:19
[Nessun oggetto] - da Skyline@69 - 25/08/2011, 22:25
[Nessun oggetto] - da Patoffo - 25/08/2011, 22:33
[Nessun oggetto] - da Skyline@69 - 25/08/2011, 22:40
[Nessun oggetto] - da Luxor - 25/08/2011, 22:59
[Nessun oggetto] - da Skyline@69 - 25/08/2011, 23:15
[Nessun oggetto] - da andry700 - 26/08/2011, 11:09
[Nessun oggetto] - da Skyline@69 - 26/08/2011, 11:41
[Nessun oggetto] - da Cato97 - 26/08/2011, 13:05
[Nessun oggetto] - da Skyline@69 - 26/08/2011, 13:50
[Nessun oggetto] - da Cato97 - 26/08/2011, 14:09
[Nessun oggetto] - da Skyline@69 - 26/08/2011, 14:32
[Nessun oggetto] - da Cato97 - 26/08/2011, 14:56
[Nessun oggetto] - da digger - 26/08/2011, 14:56
[Nessun oggetto] - da Skyline@69 - 26/08/2011, 15:11
[Nessun oggetto] - da digger - 26/08/2011, 17:23
[Nessun oggetto] - da Skyline@69 - 26/08/2011, 17:33
[Nessun oggetto] - da Cato97 - 27/08/2011, 23:55
[Nessun oggetto] - da Skyline@69 - 28/08/2011, 8:19

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



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