Demoversion: Wie mache ich sie sicher?



  • 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 🙄



  • telefon registrierung^^



  • Badestrand schrieb:

    Dann lagert man eben ein wenig Funktionalität, irgendwas triviales ohne dass es aber nicht geht, auf den Server aus.

    Das wäre im Grunde die einzige Möglichkeit. Aber wenn es zu trivial ist, dann wird man es wieder ersetzen können und es erfordert eine entsprechend ausgerüstete Infrastruktur.



  • Ideee schrieb:

    Man könnte auch was mit RSA basteln

    Und der Private Key liegt als Klartext im Sourcecode? Oder wird der dann wieder in irgendeiner Datei "versteckt"? 🤡



  • Solange die Information auf der eigenen Platte landet, ist sie immer leicht zu finden. Dafür muss man die Applikation teilweise nichtmal diassemblieren. Registry/File Monitor Software ist im Netz kostenlos zu kriegen und die reichen aus um zu sehen, was die Anwendung so macht. Etwas mehr Sicherheit bietet wohl nur die "Rücksprache" der Software mit einem Internet-Server oder sowas in der Art, wo der User nicht rankommt. Wasserdicht wirds dadurch allerdings auch nicht.



  • mach 2 demoversionen die jeweils die hälfte der funktionalität enthalten



  • byto schrieb:

    Ideee schrieb:

    Man könnte auch was mit RSA basteln

    Und der Private Key liegt als Klartext im Sourcecode? Oder wird der dann wieder in irgendeiner Datei "versteckt"? 🤡

    Der private Schlüssel verbleibt immer beim Programmierer. Zum Entschlüsseln wird der öffentliche Schlüssel verwendet, der im Programm enthalten ist.

    Ansonsten sollte man sich nicht der Hoffnung hingeben, die Testversion sicher machen zu können. Wenn man sich mal anschaut, wieviel Aufwand z.B. Adobe in die Sicherung seiner Produkte steckt und wie schnell es dafür "Abhilfe" gibt, dann sollte man die Zeit für die Programmierung eines umfangreichen Schutzes lieber gleich in die Verbesserung des Programms stecken. Denn das bringt wirklich zahlende Kundschaft. Den Wettlauf mit den Crackern kannst Du sowieso nicht gewinnen.



  • genau!
    Wer wirklich mit einer Software arbeiten will, zahlt auch dafür anstatt cracks zu benutzen. Die anderen gehören oft der Fraktion "Brauch-ich-zwar-nicht-aber-wenns-gratis-ist-nehme-ich-es-halt-doch"
    an
    🤡 🤡 :schland:


Anmelden zum Antworten