C++ Software mit Limit

xtrars

Ensign
Registriert
Juni 2010
Beiträge
148
Ich habe da eine Frage die mich seit kurzem extrem interessiert: Es gibt ja zum Beispiel Spiele die man nur 60 Minuten spielen kann oder Programme welche man nur 5 mal öffnen kann und danach eine Meldung kommt das man sich die Vollversion holen soll um weiter zu spielen/zu arbeiten.
Die eigentliche Frage: wie könnte sowas aussehen wenn man es mit C++ programmiert
(ein Beispielcode wäre toll)

Danke schonmal im Voraus
 
raudy1992 schrieb:
Ich habe da eine Frage die mich seit kurzem extrem interessiert: Es gibt ja zum Beispiel Spiele die man nur 60 Minuten spielen kann oder Programme welche man nur 5 mal öffnen kann und danach eine Meldung kommt das man sich die Vollversion holen soll um weiter zu spielen/zu arbeiten.
Die eigentliche Frage: wie könnte sowas aussehen wenn man es mit C++ programmiert
(ein Beispielcode wäre toll)

Danke schonmal im Voraus

Man könnte über die Windows-API einen Timer erstellen und starten.
Dann ein Event registrieren und nach so und so vielen Sekunden zeigt man dann dieses Hinweisfenster das man ne Vollversion kaufen soll.
Beispielcode hätte ich für CSharp, aber nicht für C++.
 
Es kommt darauf an wie sicher das sein soll. Am einfachsten kannst du es mit dem Eintragen eines Registrierungsschlüssels realisieren, der irgendwo in der Registry verschlüsselt gespeichert wird und der enthält, wie oft der Benutzer das Spiel schon gestartet hat.
 
Zuletzt bearbeitet:
Das Startprinzip kann man am einfachsten über eine Datei realisieren, wo das Spiel immer einen Wert reinschreibt und raus liest.

Startest du das Spiel, wird zuerst in die Datei geschaut, der Wert raus gelesen und geschaut, ob es den Maximum entspricht. Wenn ja, dann wird abgebrochen(beendet). Bei Nein erhöht das Spiel den Wert um 1 ,schreibt ihn wieder in die Datei und startet das Spiel.

Hier wird der der Umgang mit Dateien gezeigt und wie man reinschreibt und raus liest.
http://www.cplusplus.com/doc/tutorial/files/

Das mit den 60Min kannst du über einen Countdown umsetzen oder durch Überprüfung der lokalen Zeit.
http://www.cplusplus.com/reference/clibrary/ctime/clock/ Countdown.

http://www.cplusplus.com/reference/clibrary/ctime/localtime/ lokale Zeit.
Bei Überprüfung der lokalen Zeit müsste dann das Programm in einem bestimmten Intervall den Wert neu Überprüfung und mit den alten Vergleichen und dann entscheiden, ob es weiterlaufen darf oder nicht.


Hoffe reicht dir so, ... die Idee dahinter ist nicht schwer. Gibt auch noch andere Methoden aber gerade für Anfänger sind die hier relativ leicht umzusetzen.
 
Du scheibst die Information z.B. in eine Datei.

Die Information in der Datei verschlüsselst Du.

Diese Datei bekommt eine Prüfsumme.

---------------------------------

Du ließt die Datei, bildest die Prüfsumme. Du stellst fest: Inhanlt nicht manipuliert. Du ließt den Wert aus, wie lange die Laufzeit noch sein darf. Läßt den Zähler in deinem Programm mitlaufen und schreibst auf dem umgekehrten Weg die Daten (Laufzeit) wieder zurück in eine Datei

Ersetze Datei mit Registry oder Internet Webserver oder oder oder :) Wie du magst
 
Ah, .. so kann man es aufmachen. Die Spielzeit einfach in ne Datei schreiben. Mein Post bezieht sich darauf, dass man immer nur 60min spielen kann und nicht insgesamt.
 
Cool hier sind tolle Antworten dabei. Da bleibt nur eine Frage: wie funktioniert das mit der Prüfsumme?
 
Man sollte allerdings die registry-einschränkungen von vista/win7 beachten...
 
welche einschränkungen?
 
Das ohne erhöhte rechte es nicht möglich ist in den HKEY_LOCAL_MACHINE zu schreiben.

Nur CURRENT_USER ist erlaubt... un durch anlegen eines neuen Users wäre die gewünschte sicherung umgangen...
 
tRITON schrieb:
Du scheibst die Information z.B. in eine Datei.

Die Information in der Datei verschlüsselst Du.

Diese Datei bekommt eine Prüfsumme.

---------------------------------

Du ließt die Datei, bildest die Prüfsumme. Du stellst fest: Inhanlt nicht manipuliert. Du ließt den Wert aus, wie lange die Laufzeit noch sein darf. Läßt den Zähler in deinem Programm mitlaufen und schreibst auf dem umgekehrten Weg die Daten (Laufzeit) wieder zurück in eine Datei

Ersetze Datei mit Registry oder Internet Webserver oder oder oder :) Wie du magst
Unnötig umständlich und leicht zu umgehen. Man macht eine Kopie der Datei und nach jedem
Start ersetzt man sie mit der Kopie. Dann ist die Datei nicht manipuliert und man kann das
Programm trotzdem so oft starten, wie man will.

Verschlüsselung ist kein Allheilmittel. Man sollte sie überlegt einsetzen. Hier wäre der Einsatz
völlig unsinnig.
 
HEHE DRM wat? Ah ja in diesem Fall begrenzte DRM. :D

Es geht auch einfacher... du scheindest einfach was aus dem spiel raus und wenn es zum schluss kommt... zack.. spiel vorbei... vollversion bitte beziehen.
 
Also mit nach ein paar Minuten beenden:
Code:
int WINAPI timer(DWORD a)
{
Sleep(60*1000);
exit(0);
return 0;
}
...
CreateThread(...Timer...);
Mit mehrmals Starten, elegant wäre es, das Erstellungsdatum einer DLL zu ändern, damit könnte man dann die Anzahl der Starts speichern. Oder direkt die Exe manipulieren, das ist dann nicht so einfach.
Gegen Drüberkopierer gibt es praktisch keinen Schutz (Registry hilft auch nicht (Regmon)).
Sonst halt noch die volle Keule mit ner Internetverbindung, die in der Vollversion nicht benötigt wird (Validierung auf dem Server, bspw. durch einen Key).
 
Blitzmerker schrieb:
Also mit nach ein paar Minuten beenden:
Code:
int WINAPI timer(DWORD a)
{
Sleep(60*1000);
exit(0);
return 0;
}
...
CreateThread(...Timer...);
Mit mehrmals Starten, elegant wäre es, das Erstellungsdatum einer DLL zu ändern, damit könnte man dann die Anzahl der Starts speichern. Oder direkt die Exe manipulieren, das ist dann nicht so einfach.
Gegen Drüberkopierer gibt es praktisch keinen Schutz (Registry hilft auch nicht (Regmon)).
Sonst halt noch die volle Keule mit ner Internetverbindung, die in der Vollversion nicht benötigt wird (Validierung auf dem Server, bspw. durch einen Key).


hehe das mit dem Server kennen wir doch irgendwo her? Ubisoft und Co.

Am einfachsten ohne Kontrolle... nur begrenzter Anzahl von Maps. du musst du auch nicht validieren!
 
Ja klar, schamlos raubkopiert :) .
Na ja, ich würds halt nur in der Demo einbauen (ich weiß, NOPs rein und weg ist der Demoschutz).
Mit der Begrenzung, das ist ja nicht gefragt ...

Die Frage ist, wie schwer soll es sein, es auszuhebeln, wie bei WinRAR, Ubisoft, Windows?
Keine Demo ist übrigens auch ne Demo :) .
 
Zurück
Oben