Kopierschutz

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
mk-soft
Beiträge: 3845
Registriert: 24.11.2004 13:12
Wohnort: Germany

Beitrag von mk-soft »

Im englischen forum gefunden
http://www.purebasic.fr/english/viewtop ... =mainboard

Ein freischaltcode damit generieren

Code: Alles auswählen

;
; Get Hardware Fingerprint
;
#HW_PROFILE_GUIDLEN = $27
#MAX_PROFILE_LEN = $50

Structure HW_PROFILE_INFO
  DockInfo.l
  szHWProfileGUID.c[#HW_PROFILE_GUIDLEN]
  szHwProfileName.c[#MAX_PROFILE_LEN]
EndStructure

Procedure.s HardwareFingerprint()
  Protected hwp.HW_PROFILE_INFO
  GetCurrentHwProfile_(@hwp)
  Debug PeekS(@hwp\szHwProfileName[0]) + " -> " + PeekS(@hwp\szHWProfileGUID[0])
  ProcedureReturn PeekS(@hwp\szHWProfileGUID[0])
EndProcedure

Debug HardwareFingerprint()
FF :wink:

Code-Tags korrigiert - Andesdaf
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
Joel
Beiträge: 851
Registriert: 21.04.2006 19:22

Beitrag von Joel »

Nein!!!

Machs doch so, du schickst ihnen das Programm und wenn sie es das erste mal ausführen läd es vin einem Server eine zusätzliche Datei. Wenn auf den Rechnern deiner Freunde das programm läuft, löschst du die Datei. wenn jemand anders die Datei ausführt stürzt sie ab, weil die Datei weder auf HDD noch duch FTP Downloadbar ist.
----------------------------------------------------------

PB 5.20 Beta 10 | Windows 7
Little John

Beitrag von Little John »

Joel hat geschrieben:Machs doch so, du schickst ihnen das Programm und wenn sie es das erste mal ausführen läd es vin einem Server eine zusätzliche Datei. Wenn auf den Rechnern deiner Freunde das programm läuft, löschst du die Datei. wenn jemand anders die Datei ausführt stürzt sie ab, weil die Datei weder auf HDD noch duch FTP Downloadbar ist.
Das lässt sich dadurch knacken, dass man den Download der betreffenden Datei "abschaltet" ...

Gruß, Little John
Benutzeravatar
cxAlex
Beiträge: 2111
Registriert: 26.06.2008 10:42

Beitrag von cxAlex »

Du willst das Programm doch nur 1. Freund schenken oder? Dann programmier eben einen fixen Hardware-Key direkt in die Software, Beispielsweise seine MAC in Verbindung mit der Prozessor-Seriennummer usw. sei kreativ :D . Die Datei dann weiterzugeben dürfte dann sinnlos sein außer er patcht den Key raus, und das sollte ein Laie eher nicht schaffen.
Projekte: IO.pbi, vcpu
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster

Bild

PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86
Benutzeravatar
mk-soft
Beiträge: 3845
Registriert: 24.11.2004 13:12
Wohnort: Germany

Beitrag von mk-soft »

Jeder PC hat seine eigene HWProfile GUID
Habs mal erweitert

Code: Alles auswählen

;
; Get Hardware Fingerprint
;
#HW_PROFILE_GUIDLEN = $27
#MAX_PROFILE_LEN = $50

Structure HW_PROFILE_INFO
  DockInfo.l
  szHWProfileGUID.c[#HW_PROFILE_GUIDLEN]
  szHwProfileName.c[#MAX_PROFILE_LEN]
EndStructure

Procedure.s HardwareFingerprint()
  Protected hwp.HW_PROFILE_INFO
  Protected result.s
  
  GetCurrentHwProfile_(@hwp)
  result = PeekS(@hwp\szHWProfileGUID[0])
  result = UCase(result)
  result = Mid(result, 2, Len(result) - 2)
  result = RemoveString(result, "-")
  
  ProcedureReturn result
EndProcedure


Procedure.s CreateCode(HW_Code.s)
  Protected Code.s, Result.s
  Code = "Schlüssel:" + HW_Code
  Result = MD5Fingerprint(@Code, StringByteLength(Code))
  ProcedureReturn Result
EndProcedure

Procedure CheckCode(freigabe.s)
  Protected Code.s, Result.s
  Code = "Schlüssel:" + HardwareFingerprint()
  Result = MD5Fingerprint(@Code, StringByteLength(Code))
  If result = freigabe
    ProcedureReturn #True
  Else
    ProcedureReturn #False
  EndIf
EndProcedure


; Anwendung - Code für Freigabe anfordern
hw.s = HardwareFingerprint()
Debug "Anfordercode: " + hw
; Hotline - Freigabe erstellen
code.s = createcode(hw)
Debug "Freischalt Code: " + code

; Anwendung - Code Ok
Debug "Freigabe: " + Str(Checkcode(code))
P.S. Auch wenn das Programm mit gespeicherten Freischaltcode weiter geben wird ist dann der gespeicherte freischaltcode ungültig
Zuletzt geändert von mk-soft am 26.04.2009 19:09, insgesamt 2-mal geändert.
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
cxAlex
Beiträge: 2111
Registriert: 26.06.2008 10:42

Beitrag von cxAlex »

Gute Lösung find ich :allright: .

Aber die einfachste hab ich vergessen: Du schreibst im About einfach groß und fett den Namen deines Freundes rein "Für ......", und wenn so eine Version irgendwo auftaucht weist du ja wenn du einen Kopf kleiner machen musst. Kommt jetzt ganz auf deinen Freund an ob das machbar ist :mrgreen: .
Projekte: IO.pbi, vcpu
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster

Bild

PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86
Benutzeravatar
Sauer-RAM
Beiträge: 326
Registriert: 13.04.2009 16:22
Computerausstattung: Lenovo ThinkPad X230t Convertible
Wohnort: Haslach i. K.

Beitrag von Sauer-RAM »

Das mit dem hardware key will ich ja machen, ich weis nur nicht wie das geht.
"Bildung kommt vom Bildschirm und nicht vom Buch, sonst hieße es ja Buchung."
Dieter Hildebrandt
"Bildung ist Das, was übrig bleibt, wenn man alles was man in der Schule gelernt hat, vergisst. "
Albert Einstein
Benutzeravatar
X360 Andy
Beiträge: 1206
Registriert: 11.05.2008 00:22
Wohnort: Bodensee
Kontaktdaten:

Beitrag von X360 Andy »

Guckst du 2 Beiträge über dir....
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

damit isses ja nit getan...
man muss den ja auch irgendwie in den code einbaun um zu vergleichen.

also müsste er praktisch ein vorab-programm schreiben, das den hardware-key ermittelt und ihm zuschickt,
dann kann er ihn in seinen code reinschreiben und das eigentliche programm compilieren.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
mk-soft
Beiträge: 3845
Registriert: 24.11.2004 13:12
Wohnort: Germany

Beitrag von mk-soft »

Der Freischaltcode kann auch telefonisch angefordert werden. Das Programm so schreiben das erst nach der eingabe des freischaltcode erst alle funktionen verfügbar sind.
Werde mal was basteln.
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Antworten