AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) ProductID auslesen zwecks "Kopierschutz"

ProductID auslesen zwecks "Kopierschutz"

Ein Thema von erich.wanker · begonnen am 26. Mai 2015 · letzter Beitrag vom 27. Mai 2015
Antwort Antwort
Seite 1 von 2  1 2   
Benutzerbild von erich.wanker
erich.wanker

Registriert seit: 31. Jan 2008
Ort: im schönen Salzburger Land
453 Beiträge
 
Delphi XE4 Professional
 
#1

ProductID auslesen zwecks "Kopierschutz"

  Alt 26. Mai 2015, 10:58
Hallo Leute,

ich möchte gerne einen "eindeutigen" String eines WindowsOS auslesen..
Gegal ob UAC aktiv oder nicht
Egal ob 32 oder 64 Bit Windows
Egal ob reale Maschine oder virtuelle Maschine
Egal ob uraltes oder neuestes Betriebssystem
Egal - welche Userberechtigung anliegt

Anhand dieses Strings würde ich dann online "nachschauen" - ob der Rechner eine gültige Nutzungslizenz besitzt.


Hab momentan die unten ageführten Zeilen:

Ist das eurer Meinung nach ne brauchbare Lösung (auch in Bezug auf Win10?)

Vielen Dank für Infos

Erich



Delphi-Quellcode:
function TMainForm.GetWindowsRegistryValuesA: string;
const
  CDataValue1: string = 'DigitalProductId';
  CDataValue2: string = 'DigitalProductId4';
  CKeyName: string = 'SOFTWARE\Microsoft\Windows NT\CurrentVersion\';
var
  Reg: TRegistry;
  message_string:String;
  vSize, p: integer;
  tmpStr: AnsiString;
begin

  message_string:='Keine Werte gefunden';

  Reg := TRegistry.Create;
  try
    Reg.RootKey := HKEY_LOCAL_MACHINE;
    if (Reg.OpenKeyReadOnly(CKeyName)) then
    begin
      try

        if Reg.ValueExists(CDataValue1) then // 32 Bit OS
              begin
              vSize := reg.GetDataSize(CDataValue1);
              if (vSize > 0) then
              begin
                SetLength(tmpStr, vSize);
                reg.ReadBinaryData(CDataValue1, tmpstr[1], vSize);
                repeat
                  p := Pos(#0, tmpStr);
                  if p <> 0 then
                    Delete(tmpStr, p, 1);
                until p = 0;
                message_string :='ProductID 32bit:'+ tmpStr;
              end;
              end;

        if Reg.ValueExists(CDataValue2) then // 64 Bit OS
              begin
              vSize := reg.GetDataSize(CDataValue2);
              if (vSize > 0) then
              begin
                SetLength(tmpStr, vSize);
                reg.ReadBinaryData(CDataValue2, tmpstr[1], vSize);
                repeat
                  p := Pos(#0, tmpStr);
                  if p <> 0 then
                    Delete(tmpStr, p, 1);
                until p = 0;
                message_string :='ProductID 64bit:'+ tmpStr;
              end;
              end;

      finally
        Reg.CloseKey;
      end;
    end;
  finally
    Reg.Free;
  end;

  showmessage(message_string);

end;
Erich Wanker - for life:=1971 to lebensende do begin ..
O
/H\
/ \

Geändert von erich.wanker (26. Mai 2015 um 11:07 Uhr)
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.093 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: ProductID auslesen zwecks "Kopierschutz"

  Alt 26. Mai 2015, 11:00
Und wenn jemand sein OS neu installiert oder upgraded ist die Lizenz nicht mehr gültig? Ich dachte (Achtung, Halbwissen), so etwas macht man üblicherweise über die MAC des ersten Netzwerkadapters?
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#3

AW: ProductID auslesen zwecks "Kopierschutz"

  Alt 26. Mai 2015, 11:00
Was soll Dir das bringen ? Was passiert wenn der Anwender einen Betriebssystemwechsel durchführt ?
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Benutzerbild von erich.wanker
erich.wanker

Registriert seit: 31. Jan 2008
Ort: im schönen Salzburger Land
453 Beiträge
 
Delphi XE4 Professional
 
#4

AW: ProductID auslesen zwecks "Kopierschutz"

  Alt 26. Mai 2015, 11:06
Falls der User das Betriebssystem wechselt - schick ich ihm eine neue Lizenz ..

Mir geht es nur darum - dass die Software auf EIN verifiziertes OS beschränkt ist.
Erich Wanker - for life:=1971 to lebensende do begin ..
O
/H\
/ \
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#5

AW: ProductID auslesen zwecks "Kopierschutz"

  Alt 26. Mai 2015, 11:16
Ich sage mir in solchen Fällen immer: ist das Programm so gut, dass es die halbe Welt haben will, wird man es knacken. Ist es ein unwichtiges pillepale Programm, wozu der Aufwand?

Also diese Methode kann man wohl mit einem Eintrag in hosts aushebeln. Es seiden, das Programm funktioniert gar nicht ohne Überprüfung. Dann funktioniert es also immer dann nicht wenn man kein Internetzugang hat.

Mal klein wenig OT: zum Kopierschutz habe ich ein gespaltenes Verhältnis. Es sollte gut, aber nie zu gut sein. Ich habe schon so manche ehemals sehr erfolgreiche Programme von jetzt auf sofort von der Bildfläche verschwinden sehen, als die einen guten Kopierschutz eingeführt haben. Illegale Kopien, so sehr sie einen ärgern, sind auch immer etwas kostenlose Werbung.
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.123 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: ProductID auslesen zwecks "Kopierschutz"

  Alt 26. Mai 2015, 11:33
Illegale Kopien, so sehr sie einen ärgern, sind auch immer etwas kostenlose Werbung.[/SIZE]
Blöd nur, wenn 99% der Anwender die Software umsonst benutzen...
  Mit Zitat antworten Zitat
Benutzerbild von guinnes
guinnes

Registriert seit: 28. Feb 2007
Ort: Bottrop
265 Beiträge
 
Delphi 5 Enterprise
 
#7

AW: ProductID auslesen zwecks "Kopierschutz"

  Alt 26. Mai 2015, 11:40
Anhand dieses Strings würde ich dann online "nachschauen" - ob der Rechner eine gültige Nutzungslizenz besitzt.
Und der, der dein Programm knacken will, disassembliert es und tauscht ein Byte aus und kann dein Programm ohne Einschränkungen benutzen.
Auf den letzten 3-4 EKON's gab es jeweils mindestens einen Vortrag zum Softwareschutz und die Essenz daraus : Vergiss es oder setz was professionelles ein
Glückauf
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#8

AW: ProductID auslesen zwecks "Kopierschutz"

  Alt 26. Mai 2015, 11:53
Das will ich nicht verneinen, aber ich stelle mir immer die Frage: wie viele von den 99% sich meine Software tatsächlich auch gekauft hätten? Nicht jeder der sie nutzt ist ein tatsächlicher Kunde. Was soll angeblich AutoDesk über ihr AutoCAD (frei wiedergegeben) gesagt haben? Was interessiert es uns ob Klein Hänschen sich illegal unsere Software besorgt hat um damit sein Vogelhäuschen zu planen. Unsere Kunden sind die Firmen. Wenn eine Software wie z. B. TotalCommander nicht mehr kostenlos nutzbar ist, werden die Leute eine andere Software nutzen. Irgendwann verringert sich der Bekanntheitsgrad des Programms und dann stellt sich die Frage ob man noch dem 1% seine Software verkauft kriegt.
  Mit Zitat antworten Zitat
Benutzerbild von frankyboy1974
frankyboy1974

Registriert seit: 7. Apr 2015
Ort: SH
169 Beiträge
 
Delphi XE7 Professional
 
#9

AW: ProductID auslesen zwecks "Kopierschutz"

  Alt 26. Mai 2015, 11:58
Zitat:
Und der, der dein Programm knacken will, disassembliert es und tauscht ein Byte aus und kann dein Programm ohne Einschränkungen benutzen.
Auf den letzten 3-4 EKON's gab es jeweils mindestens einen Vortrag zum Softwareschutz und die Essenz daraus : Vergiss es oder setz was professionelles ein
Bei meinen Programmen zumindesten waren die Anwender aber in der Regel keine Computerfreaks, die wissen, was es bedeutet ein Programm zu disassemblieren. In der Regel reicht ein selbst gestrickter Kopierschutz aus, es sei denn man verkauft tatsächlich ein Programm, das alle Welt besitzen möchte. Ich habe es bei meinem Programm selbst mal versucht, diese zu cracken, ist mir trotz Informatikstudium nicht gelungen. Es gib natürlch immer irgentwelche Cracker, die nichts besser zu tuen haben, als Software zu cracken und auf irgendwelchen dunklen Seiten bereit zu stellen, wer aber bereit ist von solchen Seiten Software zu installieren, dem kannst du sowie keine Software verkaufen.
Ich würde allerdings auch keinen Kopierschutz empfehlen, der nur Online funktioniert. Berechne doch aus dem Registry-Key, einen neuem verschlüsselten Key und sende diesem dem Anwender. Nur wenn dieser im Programm hinterlegte Schlüssel, mit dem in der Registry passt, ist das Programm freigeschaltet. Würde dann auch Offline funktionieren.

mfg

Frank
Java ist auch eine Insel.
Ist Delphi von Oracle?
In meiner Buchstabensuppen fehlt das C++!
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#10

AW: ProductID auslesen zwecks "Kopierschutz"

  Alt 26. Mai 2015, 11:59
Nachdem die obligatorisch Kopierschutzstandpauke nun erledigt ist, bleibt eigentlich noch die Frage, ob die ausgelesenen Werte ein System eindeutig kennzeichnen

Ich dachte (Achtung, Halbwissen), so etwas macht man üblicherweise über die MAC des ersten Netzwerkadapters?
Gibt viele Möglichkeiten, wenn ich mich recht erinnere sind die Seriennummern von den Festplatten auch beliebt. Einige hatten auch aus viele Nummern ausgewertet und z.B. Änderungen einzelner Teile ignoriert.

In der DP gibt es einen Haufen Diskussionen und Quellcode zu dem Thema (Hier im Forum suchenKopierschutz/Hier im Forum suchenSeriennummer).
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:14 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