Demoversion: Wie mache ich sie sicher?
-
Über's Web müsste das doch recht gut gehen. Der Kunde holt sich die Evaluation-Version (oder wie sowas heißt), bei jedem Start verbindet sich die Software mit dem Server und guckt, wie lange sie schon läuft. Dazu kannst du ja einen Hash über die Hardware-Komponenten plus Benutzername plus Computername oder so erstellen. Wenn du's geschickt machst, ist jeder PC bzw jede Software halbwegs eindeutig identifizierbar und da du auf dem Server den ersten Start der Software mitbekommst, kannst du den Start nach den 30 Tagen einfach verweigern.
Anmerkungen:
Der Benutzer braucht dringend und bei jedem Start des Programms Internet.
Wenn der Benutzer neue Hardware-Komponenten einbaut, muss die Software das merken, also bei jedem Start neuen Hash berechnen und mit dem alten abgleichen, falls Änderung, die halt an den Server übertragen.
-
@Badestrand
Das dürfte für einen Cracker kein Problem sein. Dann deaktiviert man einfach die Onlineabfrage.
-
Dann lagert man eben ein wenig Funktionalität, irgendwas triviales ohne dass es aber nicht geht, auf den Server aus.
-
Du kannst in der demoversion funktionalität auf den Server auslagern, dann kann zumindest die online abfrage nichtmehr umgangen werden.
bleibt nurnoch das Grundproblem der nutzeridentifikation. Denn so ohne weiteres verhindern, dass sich jemand einfach nen neuen account holt, kann man so ohne weiteres nicht.
//heute hab ichs aber. irgendwer ist immer schneller
-
Brauchst wohl noch nen Kaffee :p
-
Ist denn die Vollversion geschützt? Es hat m.E. nicht viel Sinn, die Demoversion kugelsicher zu machen, wenn sich jeder die Vollversion kopieren kann.
Wenn das so ist, dann kannst du doch den Mechanismus der Vollversion auch für die Demoversion benutzen.
-
@rüdiger: Ja, aber das wäre dann schon ziemlich aufwändig, oder? Ob sich das lohnt, kommt evtl. auch drauf an, wie teuer die Software werden soll.
Wieviel soll denn die Vollversion in etwa kosten? Und kann man von einem User wirklich erwarten, dass er bei jedem Start das Internet verfügbar haben soll und die Verbindung auch zulässt?
Wie wäre es in der Demo sowas à la Total Commander einzubauen? Also beim Start den Nutzer ein klein wenig abnerven mit Zufallsabfrage (ein paar Buttons, der User muss zum Start auf einen klicken, der vorher zufällig bestimmt wird) oder eine Zeitverzögerung von 10 s oder so. Halt so, dass der Nutzer einen Anreiz hat, die Software doch zu kaufen, wenn er sie häufiger nutzt und effezient damit arbeiten will.
-
by the hammer
-
Es ist so, dass die Benutzer auf die wir abzielen in den seltensten Fällen
auf den Arbeitsplätzen Internetverbindungen haben. Kaum zu glauben aber wahr...Welcher Ordner ist denn unter allen Windowsversionen grundsätzlich von jedem
Anwender beschreibbar? Da würd eich dann eine entsprechende Datei verschlüsselt
ablegen und den Wert hochzählen!Nur in welchem Pfad ist sowas machbar?
-
Stell einfach alles unter die GPL, dann hat sich das Problem gelöst.
-
Einen Wert in einer Datei zu speichern ist doch auch relativ Wirkungslos. Sobald man weiß wo diese Datei ist (und das ist sicherlich sehr einfahc rauszukriegen) kann ja ein Shell-/Batchscript geschrieben werden, dass zunächst die Datei nach der Installation sichert und vor jedem Ausführen einfahc wieder auf den erstzustand zurücksetzt.
-
Hanny schrieb:
Da würd eich dann eine entsprechende Datei verschlüsselt
ablegen und den Wert hochzählen!Auch wenn du den Dateiinhalt verschlüsselt, was hält jemanden davon ab, anfangs von dieser Datei eine "Sicherheitskopie" zu machen und diese später wiederherzustellen, wenn es nahe an die 200 geht?
edit: Hmja, eine halbe Minute zu spät
-
Nanyuki schrieb:
edit: Hmja, eine halbe Minute zu spät
Kaffee? Aber ich stimm dir zu!
-
Die Datei würde nicht im Installverzeichnis liegen und aus meiner Exe erzeugt werden.
Der Durchschnittsanwender hat keine Chance die Datei zu finden, wenn ich sie
irgendwo verstecke. Nur ist jetzt noch die Frage auf welche Verzeichnisse man
immer Schreibzugriff hat (sowhl unter XP, Vista als auch Server2003/08
-
-
WM_COPYDATA kopiert beliebige Daten.
-
ich muss sagen, dass mir bei nicht vorhanden sein von interent auch nix einfällt und wenn mir nix einfällt, dann geht es auch nicht.
-
IMHO kann eine nicht geschützte(also ohne AsProtect und co) Exe von jedem Anfänger mit Tutorial von hinten bis vorne durchleuchtet werden (weiß ich aus versuchen mit eigenen programmen ). Und gegen Profis hilft so gut wie gar nichts sonst gäbe es ja auch im Internet nicht die ganzen crackseiten etc. Die einzige Chance die dir bleibt ist es es dem Angreifer so schwer wie möglich zu machen die relevanten Änderungen vorzunehmen. Dazu kannst du z.B. auf einen Exe-Protector zurückgreifen (gut=teuer selbstgemacht=schwierig=billig billigiminternet(falls es das gibt)=schlecht).
Ich schlag dir einfach mal was vor mit denen du solchen leuten wenigstens nicht die Straße ebnest.1. Lagere keine Funktionen mit den namen wie "CheckLicense" oder "hasDemoEnded"in irgendwelche Dlls aus.
2. Prüfe mehrmals im Programm die Gültigkeit der Lizenz bzw. des Datums
3. Lege diese Informationen nicht in einer Variablen ab sondern in mehreren am besten mit dinamisch erstellten Speicheraddressen.Die einzig wirklich wirksame methode gegen unerlaubtes freischalten ist und bleibt die Funktionen gar nicht zur verfügung zu stellen aber das kommt bei dir ja leider nciht in Frage
Soweit von mir
Fencer
-
Noch als kleine Erweiterung zu den vorherigen vorschlägen:
Eventuell Hardwarelösung über Dongle in USB/Parallelport Form, das kommt natürlich drauf an was das für Software ist wenn die Software weniger Wert ist als der Dongle dann bringt die Sache nichts ^^
Dann gibts als weiteres noch die Möglichkeit gewisse Speicherbereiche manuell zu überwachen indem immer mal wieder eine Checksume des Speicherbereichs gebildet wird und überprüft wird ob dies wirklich so vorgesehen war von der Programmlogik. Dazu zählt zB überprüfen ob nicht zum Beispiel if(..) zB jeq anweisungen zu if(!..) jenq umgebaut wurden.
Als weiteres kannst du noch überprüfen ob gewisse Debugger laufen oder das Programm von einem Dissasemblierer ausgeführt wird.
Aber theoretisch kann alles umgangen werden die Frage ist ob ein Kunde wirklich die Kompetenz dazu besitzt.
-
appdata schrieb:
http://msdn.microsoft.com/en-us/library/bb762494(VS.85).aspx
Dann kommt also z.B. das in Frage:
CSIDL_COMMON_APPDATA (FOLDERID_ProgramData)
Version 5.0. The file system directory that contains application data for all users. A typical path is C:\Documents and Settings\All Users\Application Data. This folder is used for application data that is not user specific. For example, an application can store a spell-check dictionary, a database of clip art, or a log file in the CSIDL_COMMON_APPDATA folder. This information will not roam and is available to anyone using the computer.Aber sagt mal, kann man davon ausgehen, dass der Pfad auch immer beschreibbar
ist, oder wird eurer Meinung nach sowas auch gelegentlich in Firmen blockiert?Ich würde das natürlich abfangen, aber nur mal so gefragt