Autor Beitrag
Swordooo
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 119

W2K, Windows XP Professional
Delphi 2005 Personal, Delphi 7 Personal
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
EE-Regisseur
Beiträge: 5248
Erhaltene Danke: 2

WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
BeitragVerfasst: Sa 23.08.08 15:52 
user profile iconSwordooo 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 119

W2K, Windows XP Professional
Delphi 2005 Personal, Delphi 7 Personal
BeitragVerfasst: 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



BeitragVerfasst: Sa 23.08.08 16:08 
Wie an eine hardware binden?
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 119

W2K, Windows XP Professional
Delphi 2005 Personal, Delphi 7 Personal
BeitragVerfasst: 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):
ausblenden 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..255of Char;
begin
  Result := 0;
  if GetVolumeInformation(PChar(ADrive+':\'),
                          Buffer,
                          SizeOf(Buffer),
                          @SerialNum,
                          Dummy,
                          Dummy,
                          nil,
                          0then
    Result:=SerialNum
  else
    RaiseLastOSError;
end;


un dann z.B.:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
procedure TForm1.Button1Click(Sender: TObject);
begin
 Label1.Caption := IntToHex(GetSerialNumber('C'), 8);
end;
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 23.08.08 17:20 
@user profile iconj.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 user profile iconSwordooo geschrieben.
platzwart
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1054
Erhaltene Danke: 78

Win 7, Ubuntu 9.10
Delphi 2007 Pro, C++, Qt
BeitragVerfasst: Sa 23.08.08 18:47 
user profile iconSwordooo 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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.