Autor |
Beitrag |
Swordooo
      
Beiträge: 119
W2K, Windows XP Professional
Delphi 2005 Personal, Delphi 7 Personal
|
Verfasst: Sa 23.08.08 15:47
Hi an alle.
Ich habe verschiedene einzigartige Codes, ID's etc. aus meinem PC/Hardware ausgelsen, da ich eine Lizenzdatei erstellen möchte. Wo/wie soll ich nun eurer Meinung nach die ID's usw. abpeichern, sodass man sie möglichst nicht mit dem Editor ändern/öffnen kann.
Nur mal ein baispiel zum "nicht mit dem Editot öffnen":
Ressourcen kann man nicht mit dem Editor öffnen. Ich suche nun eine Datei-Art, die man ebenfalls nicht mit dem Editor öffnen kann, in der man aber Strings speichern und wieder daraus laden kann.
MfG Swordooo
|
|
GTA-Place
      

Beiträge: 5248
Erhaltene Danke: 2
WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
|
Verfasst: Sa 23.08.08 15:52
Swordooo hat folgendes geschrieben: | Ressourcen kann man nicht mit dem Editor öffnen. |
Tja, schön wärs Resource Hacker
=> Du wirst nichts finden, was man nicht ändern kann. Außerdem wäre es eine ziemlich doofe Idee, irgendwelche Hardware-IDs oder Datei-Ids für eine Lizenz zu nutzen.
_________________ "Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
|
|
Swordooo 
      
Beiträge: 119
W2K, Windows XP Professional
Delphi 2005 Personal, Delphi 7 Personal
|
Verfasst: Sa 23.08.08 15:58
Okay...das hat sich dann erledigt.
Aber wieso ist das mit den ID's eine dumme Idee? Ich möchte das Programm an eine Hardware binden.
Was schlagt Ihr vor??
|
|
j.klugmann
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Sa 23.08.08 16:08
Wie an eine hardware binden?
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 23.08.08 16:17
Wenn das einigermaßen sinnvoll sein soll, dann musst du die Hardware-ID jedesmal neu erzeugen und vom Benutzer eine dazu passende Seriennummer erwarten. Diese Seriennummer musst du irgendwo speichern und beim Start mit der Hardware-ID abgleichen.
Wenn jetzt jemand diese Seriennummer weitergibt, dann wird diese nicht zu einer anderen Hardware passen.
Du musst also vom Benutzer eine Hardware-ID auslesen und diese zur Generierung der Seriennummer verwenden, die du dann dem Benutzer gibst. Aus der Seriennummer und der Hardware-ID muss dein Programm dann die Echtheit erkennen. Du musst dir nur eine Berechnung überlegen, die es nicht zu einfach macht die Generierung nachzuvollziehen.
Um es mal klar zu sagen: Je nachdem wie viel Aufwand du betreibst dauert es vielleicht eine Weile das zu knacken, aber zumindest den Normalnutzer kannst du so daran hindern das Programm auf anderen PCs zu nutzen. Wenn du jedoch zur Abfrage zum Beispiel beim Start enfach eine if-Abfrage nimmst ohne diese zu versuchen zu verstecken, dann dauert es vielleicht 1 Minute das zu knacken. Letztlich kannst du das nicht verhindern, du kannst es höchstens schwerer machen dein Programm zu knacken.
Du darfst dich jedenfalls nicht darauf verlassen, dass irgendeine Lizenzdatei ungeändert ist. Die gespeicherte Seriennummer kann der Benutzer ruhig ändern. Sie wird dann nur nicht mehr zur Hardware passen und dein Programm dies erkennen. Und auf einem anderen PC müsste auch eine Seriennummer angegeben werden, die zu diesem PC passt, sonst nutzt die ganze Änderung der gespeicherten Seriennummer nix, das kann also ruhig passieren.
|
|
Swordooo 
      
Beiträge: 119
W2K, Windows XP Professional
Delphi 2005 Personal, Delphi 7 Personal
|
Verfasst: Sa 23.08.08 16:59
Naja an eine Hardware binden ist das: Man liest die Festplatten/Partition ID aus und bindet sie ins Programm ein.
ID auslesen (Partition):
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| function GetSerialNumber(const ADrive: Char): Integer; var SerialNum: DWORD; Dummy: DWord; Buffer: array[0..255] of Char; begin Result := 0; if GetVolumeInformation(PChar(ADrive+':\'), Buffer, SizeOf(Buffer), @SerialNum, Dummy, Dummy, nil, 0) then Result:=SerialNum else RaiseLastOSError; end; |
un dann z.B.: Delphi-Quelltext 1: 2: 3: 4:
| procedure TForm1.Button1Click(Sender: TObject); begin Label1.Caption := IntToHex(GetSerialNumber('C'), 8); end; |
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 23.08.08 17:20
@ j.klugmann:
Die Seriennummer der Festplatte ist hier natürlich ein schlechtes Beispiel, weil diese beliebig geändert werden kann und daher keinerlei PC-spezifische Informationen bietet.
Das Prinzip sollte aber damit deutlich werden, und was man mit einer Hardware-ID dann anstellen kann habe ich ja in der Antwort für Swordooo geschrieben.
|
|
platzwart
      
Beiträge: 1054
Erhaltene Danke: 78
Win 7, Ubuntu 9.10
Delphi 2007 Pro, C++, Qt
|
Verfasst: Sa 23.08.08 18:47
Swordooo hat folgendes geschrieben: | Naja an eine Hardware binden ist das: Man liest die Festplatten/Partition ID aus und bindet sie ins Programm ein. |
ehm, nicht dein ernst? und jedes mal, wenn eine festplatte defekt ist, wenn der user eine partition verändert, wenn der kunde das system neu aufsetzt soll er jedesmal bei dir anrufen, weil die id sich geändert hat? hast du dir mal überlegt, was da für ein riesiger arbeitsaufwand auf dich zu kommt? willst du die nächsten 10 jahre auf anrufe warten? kannst du jedem kunden dann innerhalb weniger minuten einen neuen key geben oder liegt dann eine ganze firma tagelang still, bis du reagierst?
überleg dir lieber, ob das in deinem interesse liegt.
meine ganz persönliche meinung:
die kunden, die das produkt gut finden und es benutzen wollen, die zahlen auch gerne. diejenigen, die es ohne bezahlen bekommen möchten, die kenne auch die wege, dies zu erreichen und schaffen es auch... im endefffekt verärgerst du also nur die ehrlichen kunden und bereitest dir unnötigen arbeitsaufwand...
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 23.08.08 19:50
ich habe das so verstanden, dass das mit der Laufwerks-ID nur ein Beispiel war.
Dass das keine in irgendeiner Weise sinnvolle Quelle für eine computerabhängige ID ist, ist ja klar.
|
|
|