c ++ - Bedste måde at kontrollere efter licens

Indlæg af Hanne Mølgaard Plasc

Problem



Vi har en brugerdefineret licenscheckmetode, som er meget enkel, vi kontrollerer bare en registreringsnøgle (en streng, indstillet af en anden proces baseret på forskellige parametre) og giver licens eller afvisning.


Jeg kom til at vide, at nogen bare kan knække dette, når de bliver klar over, hvilken regkey vi søger. Eller ved at søge efter cmp instruktion i samlingskode.
Jeg ville bare vide bedre løsning for dette licenscheck problem. Jeg har muligvis ikke brug for meget kompliceret procedure eller sådan. Men hvis det skulle være lidt bedre end det nuværende.


Jeg bruger C ++ \ VC ++ med Windows 7.


Tak & Rgds, Calvin

Bedste reference


Den eneste måde at fuldstændig forhindre krakning på er at bruge en løn, når du går baseret, hostet applikation, som brugerne har adgang til eksternt.
På den måde kan en person uden en gyldig betalt konto ikke bruge ansøgningen, og enhver, der afgiver sin kontooplysninger til andre, vil betale for deres brug såvel som hans eget.


Ingen kode (undtagen muligvis en stub for at tillade indlogning) sendes nogensinde til klienten, endsige opbevaret der, så klienten kan aldrig arbejde uden at forbinde til din server (som forhåbentlig ikke kommer i fare, men det 'sa sysop problem, ikke et kodende problem).


Ethvert andet system, du måtte vedtage, vil i det væsentlige være nødt til at stole på den juridiske klage bag dit licens for at forhindre folk i at revne det.

Andre referencer 1


Du skal på en eller anden måde beskytte din kode mod reverse engineering; der er mange såkaldte eksekverbare filbeskyttere, og jeg vil ikke nævne det her. Uanset hvad du beregner, vil kun to NOP instruktioner skubbe strømmen af ​​beskyttelseskontrollen i uønsket retning.


Selvfølgelig betyder det virkelig, hvilken slags kode du beskytter; For fortolket sprog er det næsten umuligt at beskytte dig selv.


Åh, undskyld, jeg kan nævne en ikke-kommerciel: berygtede Yoda 's PE Protector.

Andre referencer 2


Du kunne beregne en hash fra en hardwarespecifik værdi og tjekke for den værdi i registreringsdatabasen. På denne måde ville det ikke være nok at finde den værdi, du leder efter, men også algoritmen.


En matematisk forsvarlig måde at gøre dette på er at vende den computerspecifikke værdi (fx MAC-adresse) til et primtal, multiplicere det med dit eget magiske prime nummer og gemme produktet.


 Bemærk dog, at det normalt ikke er værd at generer med nogen beskyttelsesordning undtagen meget enkle. Selv store virksomheder kæmper med dette problem.

Andre referencer 3


Enhver logik, der kører lokalt, vil altid være tilbøjelig til at omgå. Med hensyn til den faktiske opbevaring af en licens afhængigt af din ansøgning ville jeg skrive en webservice og køre din egen server. Få appen til at tjekke din tjeneste hver gang den starter, at licensen stadig er gyldig.


Dette giver dig også meget mere fleksibilitet, for eksempel kan du tilbagekalde en licens, hvis betalingen ikke rydder.

Andre referencer 4


Du kan opnå dette ved hjælp af offentlig/privat nøglekryptering. Har lokale underskrevne filer i stedet for registreringsdatabasen, der indeholder oplysninger om licensen, og at have en webserver for at kontrollere licensen er gyldig en gang imellem. Dette bør give dig tilstrækkelig beskyttelse.


Dette kan gøres med LicenseSpot. På stedet er der s prøvekode, men kun i c #. [1]