Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Nochmal Kopierschutz ... (https://www.delphipraxis.net/186596-nochmal-kopierschutz.html)

kuba 15. Sep 2015 13:28

Nochmal Kopierschutz ...
 
Hallo,

ich nutze zur Zeit für einen Kopierschutz den Code von The Road to Delphi. Dabei lese ich nur die im Code auskommentierten Informationen zum Prozessor. Das funktioniert ganz gut, wenn der PC geklont wird geht das zu meiner Verwunderung aber leider nicht. Ich habe hier einen PC von Windows 7 auf Windows 10 upgedatet, da sind die Infos identisch. Starte ich jedoch ein Windows 7 von einem USB-Stick, dann bekomme ich andere Werte angezeigt.

Früher habe ich die MAC Adresse benutzt um den PC zu identifizieren. Es gab jedoch Probleme, wenn der PC per WLAN "aktiviert" und anschliessend mit einer Kabelverbindung genutzt wurde. Blöd ist auch, daß man keine MAC Adresse auslesen kann wenn der Netzwerkadapter deaktiviert wurde.

Meine Frage: Welche zuverlässige Hardware Information kann man ausserdem für einen Kopierschutz verwenden ?
Die Festplatte möchte ich nicht so gern als Referenz benutzen, falls die Festplatte mal defekt ist müsste ich eine neue Lizenz schicken.

Sehr ungewöhnlich finde ich, daß Hardwareinformationen des Prozessors mit unterschiedlichen Windows Systemen unterschiedliche Werte ergeben. Der Code von "The Road to Delphi" ist nicht zu empfehlen, ich hatte ihn einige Zeit im Einsatz. Es gab Windows Updates die das Ergebnis beeinflussen und dann ist wieder eine neue Lizenz fällig.

KUBA

noisy_master 15. Sep 2015 13:51

AW: Nochmal Kopierschutz ...
 
Moin,

also ich persönlich nutze USB Sticks mit Seriennummer um ein entsprechendes file auf dem Stick zu crypten. Meine SW durchsucht das System nach angeschlossenen Sticks, prüft ob die Datei vorhanden ist und decrypted die Datei mit der Seriennummer des Sticks... Stimmt der Inhalt nicht überein ...peng

Hat den großen Vorteil, dass ich dem Kunden ein (kostengünstiges)Installationsmedium als "Dongle" mitliefere und die Lizenz problemlos von Rechner zu Rechner umziehen kann und das Ganze dann gleich noch als Backup Medium dient...

Für den geübten Hacker ist das natürlich alles kein Problem, aber für den geneigten Laien....

kuba 15. Sep 2015 15:18

AW: Nochmal Kopierschutz ...
 
Hallo,

das mit dem USB-Stick hatte ich mir auch schon überlegt, kommt aber leider nicht in Frage. Die Software wird auf Touch-PC's verwendet, da stört der USB-Stick, auch wenn es so ein Mini-Stick ist.

Im Internet fand ich noch einen Code zum Auslesen der Motherboard Seriennummer. Das funktioniert, solange die Software nicht auf einem virtuellen PC verwendet wird. Bei einem virtuellen PC ist die Seriennummer immer 0.

Habe den Code unter Windows 10 getestet und mit meinem Windows 7 USB-Stick das selbe Ergebnis erhalten.

Ich bastel mir einen Code, bei dem ich den Windows Lizenzkey mit einbeziehe, das müsste funktionieren.
Auf virtuellen PC's wird die Software wohl kaum eingesetzt.

Danke !

KUBA

nuclearping 15. Sep 2015 15:34

AW: Nochmal Kopierschutz ...
 
Entwickelst du dein Projekt beruflich / kommerziell? Wenn ja, kann ich dir nur WinLicense empfehlen. Wir nutzen das schon seit Jahren und sind sehr zufrieden.

Nimm deinen Stundensatz * die Stunden, die du an einem selbstgebastelten Kopierschutz sitzt, der auch noch halbwegs "robust" sein muss. Es geht ja nicht nur um die Errechnung einer zuverlässigen Seriennummer, sondern dein Schutz sollte im Code auch so gestaltet sein, dass er sich nicht durch das Umbiegen von ein paar Opcodes im Speicher / in der .EXE aushebeln lässt.

Unterm Strich kann sich da die Investition in einen professionellen Kopierschutz im Nu armotisieren.

greenmile 16. Sep 2015 09:39

AW: Nochmal Kopierschutz ...
 
http://www.aspack.com/asprotect32.html

Kostet nur die Hälfte (< 200 EUR) und ist bei mir seit langem (> 3 Jahre) ungeknackt. Inklusive Protector, Keymaker, API für Interaktion etc.

nuclearping 16. Sep 2015 16:58

AW: Nochmal Kopierschutz ...
 
Soweit ich das mitbekommen habe, hat ASProtect Probleme mit Antivirusprogrammen? Ist das immernoch aktuell?

http://www.delphipraxis.net/186140-s...asprotect.html

greenmile 16. Sep 2015 17:09

AW: Nochmal Kopierschutz ...
 
In letzter Zeit hatte ich da keine Probleme, vor 3-4 Jahren hat Avira ganz gerne mal falschen Alarm gemeldet. Damit kann ich leben und sag den Usern, dass die Software keine Viren enthält. Mein Server (@ Home) wird von Kaspersky Endpoint gescannt, die Workstation mit Kaspersky Internet Security. Das hilft nahezu immer. Zumal Avira meistens nur wg. Heuristic zugeschlagen hat.

mm1256 16. Sep 2015 20:25

AW: Nochmal Kopierschutz ...
 
Zitat:

Zitat von nuclearping (Beitrag 1315997)
Soweit ich das mitbekommen habe, hat ASProtect Probleme mit Antivirusprogrammen? Ist das immernoch aktuell?

http://www.delphipraxis.net/186140-s...asprotect.html

Danke für die "Erinnerung". Ich habe zu AsProtect ein paar neue Erkenntnisse und werde dazu in Kürze im o.g. Thread antworten, weil, hier ist es OT.

nytaiceman 16. Sep 2015 20:45

AW: Nochmal Kopierschutz ...
 
Ich hatte ein ähnliches Problem und musste Computer möglichst eindeutig identifizieren.
Vielleicht ist das für einen privaten Kopierschutz auch brauchbar.

Jeder Computer (PC, Notebook, Smartphones) verfügt über eine eindeutige UUID. Diese ist HW-seitig eingebrannt (Ähnlich der MAC Adresse einer Netzwerkkarte). Auch virtuelle Hardware verfügen darüber (Getestet aber nur mit VMWare).

Ich verwende dazu die uSMBIOS.pas (Z.B. von hier: https://theroadtodelphi.wordpress.co...ucing-tsmbios/)

Delphi-Quellcode:
// Uses: uSMBIOS

type
 TAUUID = Array[0..31] of WideChar;

// === Convert UUID ============================================================
function FormatUUID(UUID: TAUUID):String;
begin
  Result:=Copy(UUID,0,8)+'-'+Copy(UUID,9,4)+'-'+Copy(UUID,13,4)+'-'+Copy(UUID,17,4)+'-'+Copy(UUID,21,12);
end;

function ConvertUUID(UUID: TUUID):TUUID;
var i: Integer;
    tempUUID: TUUID;
begin
  tempUUID:=UUID;
  for i := 0 to 3 do tempUUID[i]:=UUID[3-i];
  for i := 4 to 5 do tempUUID[i]:=UUID[4+(5-i)];
  for i := 6 to 7 do tempUUID[i]:=UUID[6+(7-i)];
  Result:=tempUUID;

end;

// === Get UUID ================================================================
function GetUUID:String;
Var
  SMBios : TSMBios;
  LSystem: TSystemInformation;
  UUID,UUID2   : TAUUID; //Array[0..31] of WideChar;
  Dummy: TUUID;
begin
 SMBios:=TSMBios.Create;
 try
  LSystem:=SMBios.SysInfo;
  BinToHex(@LSystem.RAWSystemInformation.UUID,UUID,SizeOf(LSystem.RAWSystemInformation.UUID));
  Dummy := ConvertUUID(LSystem.RAWSystemInformation.UUID);
  BinToHex(@Dummy,UUID2,SizeOf(LSystem.RAWSystemInformation.UUID));
  Result := FormatUUID(UUID2);
 finally
  SMBios.Free;
 end;
end;
Wünsche gutes Gelingen!


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:48 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz