Protecția bazelor mde, acces, articole, programare - programare c, delphi, c #

Pentru a simplifica prezentarea, luați în considerare situația modelului.
Ați dezvoltat un program de acces pentru organizația dvs. care a fost utilizat cu succes. În program, partea clientului este separată de date și instalată pe fiecare computer. Sunt instalate sisteme de protecție împotriva utilizatorilor curioși. Toate acestea înseamnă că în mod clar nu sunteți un programator începător. (Prin urmare, numai ideile sunt date în articol și implementarea software-ului este lăsată pentru dvs.)






Într-o zi șeful te sună și te informează că prietenul său însoțitor a devenit interesat de programul tău și este pregătit să-l cumpere pentru cinci calculatoare, cu opt disponibile. Cu toate acestea, prietenul dorește ca angajații săi să se familiarizeze cu versiunea demonstrativă și să-i dea remarcile.
Apoi, șeful, îmbrățișat de visele unei noi surse de venit, spune că știe încă două duzini de firme în care poți oferi programul. Și dacă îl puneți în vânzare pe Internet, atunci.
El este amețit de magnitudinea veniturilor așteptate, pe care, cu generozitatea sa generoasă, este gata să le împărtășească. Și capul tău începe să se rotească cu tine.

Și asta pentru tine înseamnă muncă care este cam de două ori mai mare decât dezvoltarea inițială a programului. Lucru, care include mult, nu numai dezvoltarea programului. Dar și ea. În special, programul ar trebui să fie realizat:
- modul special de demo;
- protecția împotriva copierii neautorizate.

2. Modul Demo.

Pentru a crea un mod demo, utilizați de obicei una din cele două metode:
- Limitarea timpului de program (standard - lună);
- limitarea funcțiilor programului. Pentru Access, cea mai obișnuită limitare este numărul de înregistrări din unele tabele.

În ambele cazuri, ar trebui să stocați datele care specifică modul demo undeva. Și scrieți un program pentru a traduce baza dvs. de date dintr-o stare demo într-una de lucru.

Deci, uitați de vânzări în format mdb. Fără formatul mde în bazele de date Shareware nu puteți face. Dar este atât de fiabil, în acest format? Nu poate fi convertită în format mdb? Această întrebare este repetată atât de des în forumurile de pe Access, că are deja sugestii - să stea la intrarea în forum răspunsul: "Nu poți!". Dar mulți sunt interesați de detalii - "Și de ce, de fapt, este imposibil?".

3. Conversia formatului mde în format mdb.

Microsoft a dezvoltat formatul mde ca mijloc de protejare a obiectelor bazei de date. Ideea este de a oferi un format al bazei de date lipsită de cod sursă și executabil mai rapid. Ca și formatul exe în comparație cu programul de cod sursă scrise în C ++.

Deci, formatul mde vă va proteja baza de date de furtul insolent și nu va permite ca acesta să fie pus în modul de lucru din starea demo. Al doilea este numai dacă ați ascuns datele care stabilesc bine modul demo. Despre cum să le ascundeți bine - mai jos.
Dar nu vă protejează de instalarea programului dvs. pentru exact cinci, nu opt calculatoare. Ce este mai rău, de asemenea, nu protejează împotriva transferului programului dvs. către alte firme. De exemplu, primul dvs. client va prelua și va oferi (sau va vinde ieftin) programul dvs. unei alte firme. Și asta ... mai departe.
Aici este necesar să se ia măsuri de protecție. Și există o singură protecție - legarea programului de calculator.

4. Cum să legați programul de computer.

Primul lucru care vine în minte este să marchezi computerul ca ceva și să verifici acest semn la început. Cu toate acestea, toate metodele de marcare sunt fie depășite prin metode cunoscute, fie creează multe complicații. Să le prezentăm cu caracteristici scurte.

1. Scrieți o notă despre program și starea acestuia în registru.
Aceasta este o abordare standard. Cu toate acestea, există programe care urmăresc toate accesările la registru și vă permit să găsiți și să copiați intrarea permisiunilor. Apoi, programul dvs. este distribuit împreună cu un fișier de înregistrare în registru. Această tehnică este adesea utilizată, de exemplu, pentru licențierea neautorizată a elementelor ocx.

2. Creați un fișier în locurile ascunse care îndeplinesc același rol ca și intrarea în registry.
Și în acest caz există programe care urmăresc toate apelurile către fișiere și vă permit să găsiți ceea ce aveți nevoie și să copiați. Această metodă nu este mai bună decât scrierea în registru.

3. Faceți o intrare într-un loc nestandard (memorie flash, piesele de rezervă de pe disc, grupe goale de pe disc, marcarea modului de corupere, adăugarea informațiilor în programele standard etc.).
Aceasta este calea scriitorilor de virusi. Du-te împreună cu ei nu ar trebui. În plus, în mod inevitabil, veți deveni victimă a programelor antivirus.

Să ne oprim la SerialNumber de unitate C. Ne vom aminti și vom verifica. Mai mult decât atât, pentru a evita situația schimbării caracteristicilor calculatorului este imposibilă în principiu. De exemplu, compania a cumpărat un computer nou și dorește să vă rearanjeze programul. Pentru program, aceasta este o schimbare fundamentală a tuturor caracteristicilor calculatorului. Acest lucru ar trebui să fie în mod necesar permis. Deci, trebuie să vă gândiți la schema logică de lucru cu SerialNumber.

Notă. Lituaniană în articolul său recomandă utilizarea discului SerialNumber pe care este instalat programul. Acest lucru reduce flexibilitatea sistemului, deoarece interzice transferul liber al programului de pe disc pe disc, chiar și în același computer.

5. Schema de bază a sistemului de înregistrare a copiilor.

Schema de bază a fost inventată de mult timp:
- demo-ul îi comunică cumpărătorului codul computerului;
- cumpărătorul îl trimite vânzătorului împreună cu datele acestuia;
- vânzătorul generează cheia pentru traducerea programului în stare de funcționare și îl trimite cumpărătorului;
- cumpărătorul intră în cheie și programul intră în stare de funcționare.

Dar aceasta este schema principală. Diverse opțiuni pentru punerea sa în aplicare se pot face foarte mult.

Mai jos, se vor face câteva comentarii cu privire la propunerile lui S. Litovsky. Prin urmare, dacă nu ați citit încă articolul, faceți-o acum.







Mai întâi un mic lucru. Nu este necesară criptarea numelui SerialNumber la emiterea codului computerului. El nu poartă informații unice. Prin urmare, codul computerului poate fi doar egal cu acesta.
Mai multe despre SerialNumber:
- în unele cazuri SerialNumber are un semn negativ. Eliberați valoarea absolută. Există mai puține confuzii, dar fiabilitatea este aceeași.
- pentru a citi SerialNumber este mai bine să utilizați funcția de la kernel32.dll GetVolumeInformation (în lituaniană este corectă - nu FileSystemObject). FSO nu funcționează întotdeauna (NT4).

Acum, punctul principal. Din textul "Exemplu de procedură pentru formularul de pornire" rezultă că fiecare parte client în limba lituaniană are numărul său de înregistrare. Și toată lumea este atașată la calculatorul lor. Noi numim acest lucru obligatoriu. În acest caz, trebuie să solicitați codul și să trimiteți separat cheia pentru fiecare calculator. Cu această legare, transferul părții clientului de la calculator la calculator nu se poate face și fără tine.
Dar principala dificultate nu este asta. De departe nu poți da seama dacă cumpărătorul îți înlocuiește parcul de calculatoare, cerând cinci chei noi în loc de cele vechi, fie că o crează, te înșelă ușor, fie că îți trece programul într-o altă firmă, înșelându-te deja pe o scară largă. Cheile vechi, el rămâne întotdeauna.

Mai jos este o schemă diferită, care poate fi numită o schemă de legare dinamică a programului la calculatoare. Esența este după cum urmează. În loc să solicitați codurile tuturor computerelor, trebuie să obțineți codul unui computer (orice) din rețea. Apoi generați cheia de traducere a programului în starea de lucru, inclusiv următoarele informații:
- trimis la dvs. SerialNumber;
- numărul de licențe achiziționate (câte computere va rula programul);
- numele complet al organizației, eventual cu locația acesteia.
Cheia de traducere trebuie să fie criptată.

Programul cheie de procesare trebuie:
- decripta cheia;
- compara SerialNumber cu real;
- la coincidență scrieți în zona protejată (despre aceasta mai jos) a bazei de date cu datele toate informațiile primite, adăugând SerialNumber la numele computerului. Numele computerului are o valoare auxiliară și se utilizează pentru a efectua dezinstalarea.

Numele organizației - cumpărătorul poate fi afișat sub forma unui ecran de pornire și în forma "Despre program".

Apoi, la pornire, orice parte a clientului ar trebui să citească SerialNumber a computerului său și să o găsească în zona protejată. Dacă este, programul funcționează în tăcere în continuare. În caz contrar, compară numărul de SerialNumber înregistrat și numărul de licențe. Dacă numărul de licențe nu este epuizat, atunci, după întrebarea despre corectitudinea acestei instalări, scrie un nou număr de serie și numele computerului în zona protejată.
Astfel, sistemul de contabilitate vă va permite să instalați programul pe oricare dintre cele cinci computere din rețea și nu vă va permite să îl instalați pe cel de-al șaselea. Toate părțile clientului sunt identice, ceea ce le face ușor de implementat Upgrade-ul.

Acum trebuie să rezolvăm problema transferării programului de la calculator la calculator. După cum sa menționat mai sus, este echivalent cu schimbarea SerialNumber a oricărui computer. Pentru a face acest lucru, vom completa programul nostru cu sistemul de dezinstalare. În program vom include un formular care prezintă lista de nume de computer pe care este instalat programul dvs. Lista este formată, firește, din datele preluate din zona protejată. În formular vom face butonul "Dezinstalați calculatorul specificat". Când este apăsat din zona protejată, ștergeți computerul specificat și seria SerialNumber. Acum că licența este gratuită, cumpărătorul poate să vă copieze programul pe un alt computer și să îl ruleze acolo. Programul va efectua instalarea, care va finaliza procesul de transfer. Astfel, cumpărătorul poate face toate mișcările, fără a vă adresa. Includerea poate să se ocupe de consecințele schimbării numărului SerialNumber al oricărui computer. El îl va dezinstala și îl va reinstala. Îngrijirea pe care o faceți cu utilizarea legării dinamice va fi puțin mai mică.
Două observații:
- ștergerea ultimei licențe trebuie să traducă din nou programul în versiunea demo;
- dacă ați achiziționat o licență pentru un singur computer, legările statice și dinamice sunt aceleași. Dar pentru Access, lucrul la un computer nu este un caz tipic. Da, și permisiunea de a transfera (cheia nouă), dați doar un singur computer, riscând nu atât de multe.

Cu legarea dinamică, încă o problemă care nu a fost menționată anterior a fost rezolvată imperceptibil: înregistrarea achiziției licenței. Dacă cumpărătorul introduce o cheie cu un număr crescut de licențe, programul va înlocui conținutul zonei protejate și va reinstala calculatoarele. Deși este posibilă o soluție diferită: utilizarea unei chei de format diferite, atunci când se practică, programul va crește pur și simplu numărul de licențe, permițând instalații noi.

Acum sunteți gata să păstrați un cont dinamic al computerelor în rețea. Iar programul, se pare, poate fi pus la cumpărător.

Cu toate acestea, ce se va întâmpla dacă decide să-l dea unei firme prietenoase? Pentru a face acest lucru, dezinstalează toate computerele, cu excepția unuia, iar în acest formular va transfera baza de date către o altă companie. Apoi, își instalează calculatoarele din nou și va funcționa ca mai înainte. O companie prietenoasă își va instala calculatoarele. Adică, acest sistem nu este protejat de copierea ilegală cu permisiunea proprietarului legal. Problema trebuie rezolvată. Rețineți că în cazul unei legături statice există, numai aceasta este transferată la discreția dvs. atunci când proprietarul aplică pentru chei noi în loc de cele vechi. Și decizia dvs., deoarece nu este tristă, în cazul îndepărtării de la compania cumpărătorului, nu poate fi decât un lucru: să îi dai niște chei noi. Aceasta este, în schema statică din această situație, nu există, în esență, nicio protecție.

6. Protecția împotriva copierii ilegale cu permisiunea proprietarului legal.

Schema logică: dacă totul este în ordine, atunci programul trebuie să pornească de la computerul inițial (inițial), ceea ce duce la instalarea "eternă" a tuturor computerelor și le face echivalente.

Dacă cumpărătorul dvs. a transferat programul la o altă organizație, prin dezinstalarea tuturor computerelor, cu excepția unuia, atunci într-o altă organizație de lansare de la singurul computer "etern" nu va mai fi niciodată. Și toate celelalte computere instalate într-o altă organizație vor primi o dată diferită de zero. Apoi, protecția împotriva copierii ilegale va fi declanșată de data instalării.
Găsiți-vă singur gaura din diagramă.

7. Protecția împotriva hackerilor.

Întregul sistem de securitate este construit pe baza utilizării SerialNumber. Dar puteți identifica și intercepta apelul pentru a citi acest număr și aluneca programul cu un număr corect cunoscut, având o licență pentru cel puțin un computer. Apoi, programul poate fi distribuit în mod liber împreună cu o loțiune care alunecă numărul corect. Pentru programul va arata ca lucrezi pe un singur calculator in munca adevarata a multor. Nu vă înșelați de ideea că, prin creșterea numărului de caracteristici lizibile, veți fi protejați de falsificare. Puteți intercepta și înlocui citirea oricăror caracteristici.

Dar există o protecție împotriva substituției. La pornire, programul dvs. primește numărul procesului, care nu poate fi modificat fără a încălca Windows. Să ne amintim când începe programul, adăugând caracteristicile actuale ale computerului. Și o vom verifica, să zicem, la fiecare două minute. Dacă se schimbă, atunci pentru program acest lucru va însemna că pe un computer programul dvs. este pornit de două ori. Rămâne să interzicăți o astfel de lansare, avertizând cumpărătorul despre acest lucru. Astfel vei fi protejat de hacker.

8. Stocarea informațiilor contabile (zona protejată).

Protejarea bazelor de date de la copierea ilegală este o parte necesară, dar nu cea mai consumatoare de timp, pentru transformarea programului într-un produs de bază. Iată câteva altele: restaurarea bazei de date căzută a clienților, soluția de probleme de performanță pe monitoare cu rezoluții diferite, Upgrade-ul nu este doar partea de client, dar, de asemenea, structurile de date și software-ul pentru a lucra cu structurile vechi, automatizarea upgrade în rețelele mari, sistemul va ajusta aspectul formelor de mai jos gusturi ale unor utilizatori diferiți și, nu în ultimul rând, parte a programatorilor - un program detaliat de ajutor contextual care ține cont de calificarea redusă a viitorilor dvs. utilizatori.
Deci: "Nu vă grăbiți să împărțiți bucuria bucătarului".







Articole similare

Trimiteți-le prietenilor: