Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[Alg] Geschreven programma's in DEMO-vorm

Pagina: 1
Acties:
  • 178 views sinds 30-01-2008
  • Reageer

  • pkouwer
  • Registratie: November 2001
  • Laatst online: 07-10 13:23
Misschien een beetje vreemde titel, maar ik zal het verklaren:

Iedere tweaker die wel eens programma's voor derden schrijft (bv in opdracht van de baas; voor een klant) heeft wel eens voor het vraagstuk gestaan hoe zijn software af te schermen ? Hiermee bedoel ik dan niet een beveiliging tegen het kopieren ervan, maar de demo-versie van een totaalpakket.

Hoe kun je het eenvoudigst programmeren zodat er een demo-versie beschikbaar is en met een simpele ingreep, of zelf helemaal geen, dat dezelfde software een full-version is/wordt.

Werken de tweakers met licenties en zo ja hoe is de procedure ervan, van demo-aanvraag tot aanschaffen ervan ?

Ik ben benieuwd naar jullie reacties

  • MisterData
  • Registratie: September 2001
  • Laatst online: 22-11 17:05
In C/C++ denk ik dat heel veel mensen het oplossen met #ifdef-dingen. bijvoorbeeld:

C++:
1
2
3
4
5
6
7
8
void BelangrijkeBerekening(Parameter* een) {
#ifdef IS_DEMO
alert("Sorry, dit is de demoversie, die doet geen berekeningen voor je!");
return;
#else
// doe je ding
#endif
}


Moet je wel recompilen, en activeren dmv serieel nummer (dus van demoversie naar full versie) is dan niet mogelijk. Je kunt natuurlijk ook bij runtime met een if(demo_version) checken :) Net wat je het fijnst vind :)

  • Nibble
  • Registratie: Juli 2001
  • Laatst online: 12-11 09:07
Gewoon, een registratie inbakken zoals misterdata al zei, maar dan dynamisch.
Dus dat je wel met serials kan werken :)
Persoonlijk vind ik dit soort dingen altijd erg leuk om te maken. Zo veilig en flexibel mogelijk maken van je registratie procedure. Altijd lache :D
Heb al eens met internet gewerkt, hardwarematige registratie, autmatische registratie, benodigde bestanden, speciale cd's, diskette's met speciale sectoren, etcetc.. je kunt het zo gek niet bedenken.

[ Voor 28% gewijzigd door Nibble op 11-11-2003 21:52 ]

T is for TANK, and T is for TERROR ... and K is the K for KILLING in error.


  • lordsnow
  • Registratie: Maart 2000
  • Laatst online: 21:10

lordsnow

I know nothing

pkouwer schreef op 11 november 2003 @ 21:41:
Hoe kun je het eenvoudigst programmeren zodat er een demo-versie beschikbaar is en met een simpele ingreep, of zelf helemaal geen, dat dezelfde software een full-version is/wordt.
Wat wil je doen? Eerst een demo-versie verspreiden met gelimiteerde mogelijkheden die je kan opwaarderen, of een ongelimiteerde versie die na verloop van tijd gelimiteerd wordt, en die natuurlijk ook weer opgewaardeerd kan worden?

Om de verloop van tijd te kunnen uitrekenen kan je een nep-dll met daarin de installatie datum in de Windows map aanmaken. Zo kan je ook constateren dat je programma al eens is geinstalleerd geweest.

De moeilijkheid zit in de methode hoe je een demo-versie een full-versie kan maken. Deze methode moet wel redelijk tamper-proof zijn, alhoewel je er niet al te veel tijd aan moet besteden. De beste manier om cracked versies van je programma tegen te gaan is nog steeds om om de zoveel tijd zelf met een nieuwe versie/update uit te komen zodat oude versies achterhaald zijn.

In de nep-dll kan je ook nog een binaire string stoppen, zeg 160bits. Deze string is gebonden aan de versie van je programma (bv voor MijnProg v6, en v7 heeft weer een andere string).

Nu kan je, waneer mensen jou programma kopen, vragen voor hun naam en e-mail adres. Deze hash je dan. En het resultaat XOR je dan met de binaire string. Je koper krijgt dus 'zijn' serial, wat het resultaat is van deze XOR.

Jou programma doet min of meer hetzelfde - het hashed de naam en e-mail adres, XOR dat met 'zijn' serial en vergelijkt het resultaat met de binaire string in de nep-dll. Als dit klopt is het een full-version.

Nadeel van deze methode is dat het vrij makkelijk te kraken is - de manier van generen van de hash en het vergelijken met de binaire string zit allemaal in je programma en kan er uit gevist worden en veranderd. Een crack/patch is dan vrij makkelijk, alsook een serial generator.

  • alienfruit
  • Registratie: Maart 2003
  • Laatst online: 24-11 22:12

alienfruit

the alien you never expected

Tisch. Allemaal zonde van je tijd, het wordt toch wel gekraakt, op een gegeven moment besteed me tijd in het beschermen van je app tegen cracks e.d. dan dat je aan het programma zelf werkt, dat is mijn ervaring iig.

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 13:18

.oisyn

Moderator Devschuur®

Demotivational Speaker

Bliep, als je een programma schrijft voor je klant dan gaat hij dat niet zo snel kraken hoor. Dat gebeurt pas als je het schrijft voor het grote publiek

.edit: ben het wel mee eens dat de tijd die je steekt in de beveiliging in zo'n geval gewoon helemaal niet groot moet zijn, want dat is gewoon onzin

[ Voor 34% gewijzigd door .oisyn op 11-11-2003 22:32 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

Jammer dat de TS hier niet meer duidelijkheid in verschaft; maar volgens mij wordt daar het woord registratie / serial niet in genoemd; het gaat hier om demo functionaliteit. Alle suggesties zijn, .oisyn's tip in acht nemend redelijk offtopic :)

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


  • pkouwer
  • Registratie: November 2001
  • Laatst online: 07-10 13:23
ok,

sorry voor eventuele onduidelijkheid. Ik ben ook mening dat als je ze programma willen kraken, het echt wel lukt ! Ik schrijf het programma voor een klein publiek. Ik wil dus een demo-versie van mijn applicatie om bijvoorbeeld nieuwe klanten te benaderen en te laten zien wat het programma kan.

Als men het wil kopen, kan ik twee dingen doen:
1 - een tweede CD opsturen, full-version
2 - middels een licentiekey de demo full-version maken

In het 2e geval zou versleuteling middels een naam van de klant, een leuke oplossing zijn. Als de buurman het kopieert, staat er een foutieve naam. Iets om te onthouden dus.

is het nu een beetje duidelijk ?

  • dingstje
  • Registratie: Augustus 2002
  • Laatst online: 02-01-2024
Dan is de methode van lordsnow het beste denk ik... Je moet er wel rekening mee houden dat er mensen zijn die hun pc netjes houden en een extra dll file kan verwijderd worden door een of ander clean progje...

If you can't beat them, try harder


  • we_are_borg
  • Registratie: September 2000
  • Laatst online: 20-11 14:04

we_are_borg

You will Comply

Als je kiest voor een beveiliging met serie nummers maakt het dan zo dat foutive nummers toch geaccepteerd worden. De foute nummers gewoon een willekeurige aantal dagen laten werken en dan op elk venster DEMO neerzetten.
Kijk hoeveel tijd je nodig heb voor het programma en kijk hoeveel het waard is als je het 1000 keer verkoopt van netto opbrengst 10 a 15% nemen en daar de security van bouwen. Je kan ook voor een dongle (met 3 verschillende nummers) kiezen als het een belangrijke applicatie is. Alleen het drijft de prijs op.

You need the computing power of a P1, 16 MB RAM and 1 GB Harddisk to run Win95. It took the computing power of 3 Commodore 64 to fly to the Moon. Something is wrong here, and it wasn't the Apollo.


  • pkouwer
  • Registratie: November 2001
  • Laatst online: 07-10 13:23
zo'n dongel is wel interessant, iemand praktische ervaring mee ?

  • alienfruit
  • Registratie: Maart 2003
  • Laatst online: 24-11 22:12

alienfruit

the alien you never expected

pkouwer schreef op 11 november 2003 @ 23:14:
2 - middels een licentiekey de demo full-version maken
Zolang jij het maar nietzoals de TurboPower ProActivate doet, waarbij de code voor het generen van de keys gewoon in het product gewrapped zat zodoende kon je dus keys generen met de demo programma zelf. Dit is naar mij mening een grove fout, dus ik denk dat je dan beter een "Lite" editie kan uitbrengen, waarbij bepaalde functionaliteit niet beschikbaar is en meegecompileerd is zoals al reeds eerder is benoemd.

Overigens kan ik nog meerdere programma's van multinationals opnoemen waarbij het bovenstaand probleem ook aan wezig is.... |:( 8)7

  • Delphi32
  • Registratie: Juli 2001
  • Laatst online: 22:15

Delphi32

Heading for the gates of Eden

De beveiliging die ik aan het bouwen ben werkt met een public/private key pair. De licentie (dus wat de klant kan en mag met het pakket) wordt enkel en alleen verstrekt door onze internet-licentie-server, versleuteld met de private key. De applicatie kan de licentie ontcijferen middels de public key maar er niets aan wijzigen zonder de licentie ongeldig te maken.
De procedure is dan (globaal) als volgt: applicatie start, checkt aanwezigheid licentie, indien niet aanwezig haalt ie er een bij de licentie-server. Die verstrekt een trial-licentie (geldig voor x dagen vanaf registratie) of een volledige licentie die na 1 jaar vernieuwd moet worden (gratis). Er zit ook een check in of de applicatie niet al eerder een trial-licentie heeft gehad, middels een stuk of wat hardware identifiers.
App ontvangt de licentie en bepaalt aan de hand daarvan wat er wel of niet kan. Dat kan variëren van het uitschakelen van een paar menu-opties tot het compleet stoppen van de applicatie.

Het leuke van dit systeem is dat de verstrekking van de licentie volledig in onze hand is. Er is geen manier om de applicatie te runnen zonder licentie, en wij bepalen wat de klant kan en mag. Proces is volledig automatisch, klant hoeft alleen op een knop te drukken.

Uiteraard ben ik me ervan bewust dat deze beveiliging sterk maar niet onkraakbaar is. Als ontwerper van de beveiliging weet ik natuurlijk als geen ander waar je die kraakpoging moet gaan beginnen, maar dat vertel ik lekker niet :)

Het geheel wordt geregeld door een setje Delphi-componenten van Duitse makelij; ik verdenk de schrijver van de componenten er sterk van zelf ooit actief te zijn geweest in het hackwereldje.

[ Voor 7% gewijzigd door Delphi32 op 12-11-2003 00:59 ]


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 13:18

.oisyn

Moderator Devschuur®

Demotivational Speaker

Het leuke van dit systeem is dat de verstrekking van de licentie volledig in onze hand is. Er is geen manier om de applicatie te runnen zonder licentie, en wij bepalen wat de klant kan en mag. Proces is volledig automatisch, klant hoeft alleen op een knop te drukken.
uhm, het is dus simpelweg een kwestie van 1 keer die private licentie van jullie onderscheppen, en vervolgens al het dataverkeer sturen naar een zelfgebouwde "license server", die je applicatie de hele tijd van de originele license-key voorziet.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • n3ck
  • Registratie: Mei 2002
  • Laatst online: 24-07 19:47
hmm zo moeilijk is dat niet: maak gewoon een mooie vooral lastige functie (dus met veel x! enzo en delen daardoor zodat het voor jou makkelijker wordt) en laat daar je sleutels van afhangen.. tijd die het voor hen kost is de sleutel in deze.

  • madwizard
  • Registratie: Juli 2002
  • Laatst online: 26-10-2024

madwizard

Missionary to the word of ska

pkouwer schreef op 11 november 2003 @ 23:35:
zo'n dongel is wel interessant, iemand praktische ervaring mee ?
*Mits goed gebruikt* is dit 1 van de sterkste beveligingen. Voor de gebruiker ook de meest vervelende denk ik, weer een usb slot kwijt :( Maar als je programma zo belangrijk is dat je er dongles voor gaat gebruiken zullen de gebruikers dat wel niet zo erg vinden.

Het voordeel van zo'n dongle is dat het programma niet te kraken is zonder dongle, als het programma geencrypt is met een code in die dongle. Dus de mensen die het zouden kunnen kraken zijn alleen de mensen met een dongle en dat beperkt natuurlijk wel. Als je de dongle wel hebt is het afhankelijk van je programma.

Vaak zit er bij zo'n dongle pakket ook een kant en klaar 'beveilig je programma'-tooltje maar die zijn meestal wel te kraken (in tegenstelling tot de beweringen van de fabrikant ;)), omdat het ook maar gewoon wrappers zijn om je programma, alleen nu gebruiken ze data uit de dongle.

Om het nog veiliger te maken kun je de API gebruiken en er eigen data/code mee encrypten. Dat is weer lastiger omdat de cracker dan alle mogelijke plekken waar de data gedecrypt wordt moet opzoeken. Je kunt het vervelender maken door ook op andere dagen andere stukken te decrypten, zodat het helemaal lastig wordt alle plekken te vinden.

Al met al dus redelijk veilig, maar een dongle kun je uiteindelijk gewoon vergelijken met een serial, zij het dat een dongle lastiger te kopieren en verspreiden is dan een serial. Als je eenmaal een dongle hebt is de sterkte van de beveiliging compleet afhankelijk van je applicatie.

www.madwizard.org


  • pgussow
  • Registratie: Maart 2003
  • Laatst online: 18-08 16:13
Het leuke van dit systeem is dat de verstrekking van de licentie volledig in onze hand is. Er is geen manier om de applicatie te runnen zonder licentie, en wij bepalen wat de klant kan en mag. Proces is volledig automatisch, klant hoeft alleen op een knop te drukken.
Tsja, met licences lijkt me dat je ergens centraal in je code chekced of de opgehaalde licensie goed is. Hoogstwaarschijnlijk ergens een functie die true of false retouneerd, ik noem maar wat. Decompilen, code analyzen, wat bitjes omzetten en klaar..

Bovendien ga je in jouw situatie ALTIJD uit van een vaste internet-verbinding. En dat is natuurlijk een gevaarlijke aanname...

  • Delphi32
  • Registratie: Juli 2001
  • Laatst online: 22:15

Delphi32

Heading for the gates of Eden

.oisyn schreef op 12 november 2003 @ 01:02:
[...]
uhm, het is dus simpelweg een kwestie van 1 keer die private licentie van jullie onderscheppen, en vervolgens al het dataverkeer sturen naar een zelfgebouwde "license server", die je applicatie de hele tijd van de originele license-key voorziet.
De private key zit op onze server, die komt dus nooit naar buiten en is dus niet te onderscheppen (tenzij je de server hackt natuurlijk :)).
pgussow schreef op 12 november 2003 @ 09:24:
Tsja, met licences lijkt me dat je ergens centraal in je code chekced of de opgehaalde licensie goed is. Hoogstwaarschijnlijk ergens een functie die true of false retouneerd, ik noem maar wat. Decompilen, code analyzen, wat bitjes omzetten en klaar..
Was het maar zo eenvoudig :+
Er zit 1 centrale routine in de applicatie die de licentie ontcijfert met behulp van de public key die vrij eenvoudig te achterhalen valt (is nl geen geheim, daar is het een public key voor). De betekenis van deze licentie wordt op meerdere manieren verwerkt: dat kan idd met een function die true/false oplevert, maar er zijn meer wegen die naar Rome leiden. Decompileren kan natuurlijk altijd, daar is het software voor. Maar om de bitjes te gaan omzetten moet je heel wat bitjes aanpakken die op de raarste plekken zitten.
Bovendien ga je in jouw situatie ALTIJD uit van een vaste internet-verbinding. En dat is natuurlijk een gevaarlijke aanname...
Ik weet niet waar die aanname vandaan komt? Er is alleen bij opstarten eerste keer een verbinding nodig, maar dat mag ook best een dial-up zijn.

  • alienfruit
  • Registratie: Maart 2003
  • Laatst online: 24-11 22:12

alienfruit

the alien you never expected

Delphi32, die beveiliging die jij gebruikt is die gemaakt door een rus of iemand met russisch achtige naam? Afgezien hiervan elke beveiliging is te kraken, zo ook jou programma dat het op verschillende plekken checked maakt allemaal niet uit.

  • Delphi32
  • Registratie: Juli 2001
  • Laatst online: 22:15

Delphi32

Heading for the gates of Eden

alienfruit schreef op 12 november 2003 @ 11:11:
Delphi32, die beveiliging die jij gebruikt is die gemaakt door een rus of iemand met russisch achtige naam? Afgezien hiervan elke beveiliging is te kraken, zo ook jou programma dat het op verschillende plekken checked maakt allemaal niet uit.
Nope, geen russische achternaam...
Ook ik heb trouwens niet de illusie dat dit systeem onkraakbaar zou zijn, ik ben wel van mening dat deze beveiliging voor de gemiddelde hacker voldoende lastig is.

  • alienfruit
  • Registratie: Maart 2003
  • Laatst online: 24-11 22:12

alienfruit

the alien you never expected

:-) Aha. Okay, ik dacht effe dat je die beveiliging van de maker van ASpack bedoelde :) Afgezien daarvan het cracken van dongles hoeft ook niet zo moeilijk te zijn, bijv. FlexLM based programma'S zijn niet zo moeilijk zolang je maar de SDK/.lib e.d. hebt, maar goed niks meer mee gedaan sinds v7 :P

[ Voor 6% gewijzigd door alienfruit op 12-11-2003 12:03 ]


  • Delphi32
  • Registratie: Juli 2001
  • Laatst online: 22:15

Delphi32

Heading for the gates of Eden

alienfruit schreef op 12 november 2003 @ 11:57:
:-) Aha. Okay, ik dacht effe dat je die beveiliging van de maker van ASpack bedoelde :) Afgezien daarvan het cracken van dongles hoeft ook niet zo moeilijk te zijn, bijv. FlexLM based programma'S zijn niet zo moeilijk zolang je maar de SDK/.lib e.d. hebt, maar goed niks meer mee gedaan sinds v6 :P
Agree. Dat is ook de reden dat ik voor een wat goedkopere variant ben gegaan (deze set kost geloof ik iets van 2% van de prijs van FlexLM).

Overigens heb ik het idee dat we wat afdwalen... (jammer, onderwerp is zeer boeiend): TS wilde een demootje maken, geen beveiliging :)

  • pkouwer
  • Registratie: November 2001
  • Laatst online: 07-10 13:23
inmiddels is mijn koers iets aangepast en gaat ook mijn interesse uit naar een stukje beveiliging. Als ik nu door de klant een formulier (digitaal of op papier) laat invullen met wat NAW-gegevens, die naar mij toe stuur, maak ik hiervan een sleutel, voorzien van de modules die ze mogen gebruiken (A,B,C,...).

Voordat er geregistreerd is, krijg je bv in ieder scherm DEMO te zien, o.i.d.
De NAW-gegevens laat ik dan op verschillende plaatsen terugkomen, ook bij de gekopieerde versie.


Het gaat niet zo zeer om te kraken, maar puur kopieren tegen te gaan of niet interessant te maken.

misschien een ideetje om het zo te doen ?
Pagina: 1