Newsgroup: it.comp.lang.delphi
Titolo: Nascondere chiavi nel registro

Qualcuno puo' suggerirmi quali funzioni/pezzi di codice usare per nascondere
una chiave nelle zone piu' nascoste del registro?
In pratica sto scrivendo una routine di protezione del software il cui
obiettivo e' di "nascondere" dei valori utilizzando nomi di chiavi tipo i
codici univoci CLSID.
-- 
Morde. 
(morde at programmer dot net)

 codici univoci CLSID.
Perchè non ti crei un componente ActiveX da utilizzare per registrare le
informazioni
sulla licenza?
In questo modo, quando ne effettuerai la registrazione, verrà creata la
struttura di
chiavi che cerchi.
Saluti,
Carmine

 sulla licenza?
Penso che il punto sia proprio: come scrivere questo componente e come
dirgli quali chiavi creare? ;-)
-- 
Lis
ICQ@Home #7317603sette     ICQ@Work #16285702tre
Mercatino: 
http://lis77.bravepages.com
 (aggiornato *con foto*: 16/06/03)

Ehi Morde......
Guarda questo... 
http://www.sysinternals.com/files/reghide.zip
bye
 Acqua
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 dirgli quali chiavi creare? ;-)
Dall'help di Delphi5 Enterprise, puoi accedere ad un minimo di
documentazione
su come creare un controllo ActiveX.
C'è, infatti, un'accoppiata di wizard disponibili:
1- ActiveX Control Wizard
    - Permette di convertire un controllo VCL già esistente in uno ActiveX
compliant.
2- ActiveForm Wizard
    - Permette di creare applicazioni ActiveX da zero.
Ogni controllo ActiveX deve essere registrato nel sistema operativo (lo so
parlando di windows
è un pò dura... :) ).
L'operazione di registrazione prevede che sia stata definita un CLSID (lo fa
in automatico
Delphi con il wizard, oppure CTRL+SHIFT+G e ti passa la paura...).
Il controllo ActiveX che bisogna creare avrebbe il compito di:
- Verificare la correttezza delle informazioni sulla licenza ed,
eventualmente,
    memorizzarle nella stessa chiave del registro identificata dal proprio
(noto a questo punto) CLSID.
Questo può essere un primo livello di occultazione tuttavia, nessuno vieta
ad un furbo di
copiare il registry prima e dopo l'installazione. A questo punto, è
possibile individuare
la/le chiavi aggiunte e dargli un'occhiata...
Si potrebbe crittare il blocco di informazioni sensibili per rendere le cose
più difficili.
Si potrebbe far finta di operare sul registry, mentre le informazioni le
scriviamo in un blocco
sul disco e lo marchiamo come "non spostabile" (come fanno alcuni
programmi).
Si potrebbe anche legare la registrazione all'ID del disco (aggirabile in 5
secondi con i prg giusti).
Si potrebbe strutturare il codice di registrazione in due parti (entrambe
variabili), di cui
la seconda andrebbe fornita a mezzo telefono+raccomandata/email.
Ed altri 10.000.000 di modi. Il tutto, ovviamente, dipende dall'ostilità
dell'ambiente in cui opererà
l'applicativo.
HTH,
Carmine

 
http://www.sysinternals.com/files/reghide.zip
Che succede se salvo il registry su file, modifico ed importo il tutto?
Ci hai provato?
Saluti,
Carmine

> Ci hai provato?
No. Tu?


 Il controllo ActiveX che bisogna creare avrebbe il compito di:
Ecco, proprio tutto quello che hai scritto sotto ;-)


 No. Tu?
Si, adesso ci ho provato! :)
Fortunatamente non viene esportato nulla di quello che viene troncato con
"\0".
Da questo, siamo al sicuro.
Se comprimiamo anche l'eseguibile, scongiuriamo occhi indiscreti... :)
00004630h: 5C 00 52 00 65 00 67 00 69 00 73 00 74 00 72 00 ;
\.R.e.g.i.s.t.r.
00004640h: 79 00 5C 00 4D 00 61 00 63 00 68 00 69 00 6E 00 ;
y.\.M.a.c.h.i.n.
00004650h: 65 00 5C 00 53 00 4F 00 46 00 54 00 57 00 41 00 ;
e.\.S.O.F.T.W.A.
00004660h: 52 00 45 00 00 00 00 00 53 00 79 00 73 00 74 00 ;
R.E.....S.y.s.t.
00004670h: 65 00 6D 00 73 00 20 00 49 00 6E 00 74 00 65 00 ; e.m.s.
.I.n.t.e.
00004680h: 72 00 6E 00 61 00 6C 00 73 00 00 00 00 00 00 00 ;
r.n.a.l.s.......
00004690h: 43 00 61 00 6E 00 27 00 74 00 20 00 74 00 6F 00 ; C.a.n.'.t.
.t.o.
000046a0h: 75 00 63 00 68 00 20 00 6D 00 65 00 21 00 00 00 ; u.c.h.
.m.e.!...
000046b0h: 00 00 00 00 00 00 00 00 48 00 69 00 64 00 64 00 ;
........H.i.d.d.
000046c0h: 65 00 6E 00 20 00 56 00 61 00 6C 00 75 00 65    ; e.n. .V.a.l.u.e
Sapendo l'elenco delle chiavi "nascoste", si potrebbe comunque accedervi,
no?

 no?
Hai provato? Io no, ma leggo all'interno dei sources:
Thus, Regedit and Regedt32 won't be able to access this key, 
though it will be visible. 


 Ecco, proprio tutto quello che hai scritto sotto ;-)
:)
La verifica della correttezza della licenza dipende da come intendi
far registrare il tuo prodotto.
Ad esempio, in alcuni programmini, io utilizzo un metodo "preso in prestito"
dal WinZip. :) (reverse engineering dell'algoritmo che utilizza
per la costruzione delle chiavi di registrazione, con qualche
piccola aggiunta personale).
Chiedo:
- Nome,Cognome (o Rag. Sociale), P.IVA (e/o Codice Fiscale),
- poi genero un CLSID per ogni applicazione che distribuisco
- Miscelo, opportunamente, i dati di cui sopra ed ottengo
  un valore simile ad un CLSID.
A questo punto, posso occultarlo come meglio credo.
Per blindare ancora di più, ci sono gli algoritmi DES, 3DES, SHA, le chiavi
hardware...
Tu come ti regoli?
Saluti,
Carmine

 though it will be visible.
Ecco, appunto!
Se nascondo una chiave "Codice Attivazione" e poi, al successivo
lancio della mia applicazione, non posso verificarne il contenuto
siamo punto e a capo :)
Mi piace questo thread :)
Saluti

 Mi piace questo thread :)
:D


 Tu come ti regoli?
Io non mi regolo :-)
Dove lavoro utilizziamo un prodotto già fatto che si occupa di questo
aspetto per cui non ho mai dovuto affrontarlo, ma il discorso mi interessa
perchè sto pensando di fare una mia applicazioncina (extra-lavorativa) da
provare a distribuire come shareware, ma è tutto ancora in fase di ideazione
per cui penso che il problema della registrazione arriverà più avanti.
Intanto prendo nota...


 Questo mi porta a pensare che comunque da codice la puoi gestire.
Stessa conclusione ;)

:D
^___^


> Intendevo dire la stessa cosa!
Appunto!
L'interesse di Morde è quello di salvare una chiave nel registry
potendoci fare quello che gli pare (creare, modificare, eliminare) e
allo stesso tempo impedire all'utente di "manomettere" la chiave.


 dei sistemi operativi sui quali diffondere la propria applicazione. O sbaglio?
Bè, su Windows NT/2000/XP OK.
Ho cercato sulla MSDN e ????? sembra risultare anche su 98/ME
