Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Program nur bei engelegter CD nutzen (https://www.delphipraxis.net/13174-program-nur-bei-engelegter-cd-nutzen.html)

joya 12. Dez 2003 12:36


Program nur bei engelegter CD nutzen
 
Hallo Profis!!!

Ich habe folgendes Problem

Ich habe ein Spiel im Flash erstellt. Nun will ich dass die Software nur bei engelegter CD zu nutzen ist? So was ähnlich wie
CD ID-Nummer abfrage, oder sonnst noch was. So was ist nicht mit Flash möglich, aber ich glaube mit Delphi, oder DLL Datei, oder.... wäre es schon möglich. Habe ich Recht?

Bitte, helfen sie mir

Tonic1024 12. Dez 2003 14:07

Re: Program nur bei engelegter CD nutzen
 
Moin...

Die einfachste Lösung ist wohl, wenn du irgendwo, ganz versteckt eine Datei mit nem wilden, nichtssagendem Namen liegen hasst (auf der CD). Wenn die Datei da ist, ist die CD eingelegt. Das ist garkein Problem, da hast du recht.

Du kannst natürlich auch eine DLL schreiben. aber von denen weiss man ja, dass sie für irgendetwas gut sind. :lol:

Es gibt eine Kompo die als Webbrowser arbeitet. Auf IE-Basis glaube ich. Aber ob der Flash kann weiss ich nicht. Bin mir auch nicht sicher ob man dem ein Plug-In verpassen kann.

Außerdem:
Die Frage ist wohl eher, wie du sicherstellen willst, das dein Flash-File nicht einfach von der CD kopiert wird und mit irgendeinem beliebigen Flash-Player gespielt wird...

Bis denne...

Uncle Cracker 12. Dez 2003 14:47

Re: Program nur bei engelegter CD nutzen
 
Wenn du wie einen Kopierschutz bauen willst, dann ist die Methode mit der verstekcten Datei sinnlos, denn dann kopiere ich die Datei einfach auf die nächste CD mit drauf und schon läuft alles wieder.

Weiß aber auch nicht wie man es sonst machen könnte, denn nach dem Datum der Zeit zu gucken ist auch nicht gut, denn die Kopiertools ändern das Datum überahupt nicht und es ist immer so, wie auf der anderen CD.

joya 12. Dez 2003 15:27

Re: Program nur bei engelegter CD nutzen
 
ok, antwort ist super, aber

1. wie erstelle ich so eine datei
2. wo steck ich die
3 welche extension muss die haben
und wichtigste frage
4. wie kann ich dann vor das program strartet, abfragen ob die datei dabei ist???

danke vielmals

Tonic1024 12. Dez 2003 15:37

Re: Program nur bei engelegter CD nutzen
 
Moin...

zu 1.: Kommt ganz darauf an wieviel Zeit und Energie du da reinstecken willst... Notfalls tuts eine einfache TXT mit notepad.

zu 2.: Auf der CD in einem unterverzeichnis deiner Wahl

zu 3.: Denk dir was schönes aus :) - spielt bei delphi keine Rolle...

zu 4.: Indem du nicht das Spiel startest sondern dein "Prüf-programm" und das Prüf-programm startet dann dein Spiel. Davon bekommt der User dann nichts mit.

ABER!
Als Kopierschutz ist das, wie Uncle C schon sagte unbrauchbar.

UND!
Wenn dein Flash-Spiel auch eine EXE ist oder ein SWF-File, dann bist du damit noch nicht davor geschützt, das der User einfach mit der Maus auf dein Spiel clickt und trotzdem startet.

Vielleicht kann man das game in eine Recourcen-datei packen und direkt in dem von Delphi geschriebenen Programm starten. Aber wie genau das geht und ob das überhaupt geht kann ich dir nicht sagen... Hängt davon ab ob die IE-Kompo Flash unterstützt.

Ist es denn ein SWF-File?

bios denne...

Lillebrohr 12. Dez 2003 16:49

Re: Program nur bei engelegter CD nutzen
 
Hi,

also das ist alles sinnlos, so leid es mir tut.

1. Gibt es Programm wie Filemon die herrausfinden welche Dateien von einem Task genutzt werden.

2. Es ist egal ob der check in der Flash File abläuft oder in einer ext. exe, oder sonst. Debuggen kann man sowas fast immer und DANN ist nichts mehr sicher.

3. Gibt es sogenannte Flash SWF Decompiler, bei dem du ALLES ändern kannst in deiner SWF Datei, nach dem Kompilieren.

Und irgendwelche IDs abfragen und so, bringt auch nichts. Nichts ist sicher ! Wissen ist Macht !! :D


Bye

Uncle Cracker 12. Dez 2003 20:50

Re: Program nur bei engelegter CD nutzen
 
Na gut Lillebrohr, aber für einen Kopierschutz für Freunde reicht es allemal.

Es wird sich wohl kein großer Cracker vor ein simples SWF-Spiel setzten und versuchen es zu cracken, außer dieses Spiel wäre nicht Freeware :mrgreen:

H4ndy 12. Dez 2003 21:14

Re: Program nur bei engelegter CD nutzen
 
Ich kenn nen Kopierschutz, da brennt man bestimmt Dateine und Verzeichnisse
mit Nero o.ä. mit auf die CD. Sobalt die auf CD sind und man *versucht* nur einer
dieser Ordner zu öffnen oder die CD einzulesen (CloneCD o.ä.) hängt sich das CD-Laufwerk
auf und liest sich dumm und dusellig.

Man kann aber direkt auf eine Datei innerhalb dieser Verzeichnisse zugreifen.
(kannst z.b. dein Flash da reintun und es mit Delphi starten.)

Weiss aber nicht mehr genau wie der heisst.
Wenn Bedarf besteht schau ich aber nochmal nach!

joya 15. Dez 2003 07:49

Re: Program nur bei engelegter CD nutzen
 
ok, leute, zum anfang, kopierschutz ist nicht sinnlos, weil ich habe die CD schon auf 2 verschiedene arten geschutzt.

1. direkterkopierschutz - CD direkt zu kopieren ist unmöglich (in roxio und nero getestet)
2. jede zehnte cd hat eine andere serialnummer

und jetzt brauche ich noch den schutz, mit externe txt oder dll datei. sie haben mir geschrieben:

zu 4.: Indem du nicht das Spiel startest sondern dein "Prüf-programm" und das Prüf-programm startet dann dein Spiel. Davon bekommt der User dann nichts mit.

das klingt interessant, können sie mir mehr davon erzählen?
und zwar:

1: wie und wo erstelle ich so ein "prüf-programm"?
2: kann mir jemand quelle datei oder code schicken , für dieses "prüf-programm" (ich habe sehr wenig erfahrung in delphi)?
das programm soll a) abfragen ob eine txt datei auf cd ist
b) wenn ja, exe (flash) programm starten


danke vielmals

ps. wenn jemand mehr von direkterkopierschutz wissen will, ich sag gern mehr davon


joya

Tonic1024 15. Dez 2003 10:30

Re: Program nur bei engelegter CD nutzen
 
Moin...

Also Sinnlos ist soetwas nie. Es ist schon so, nichts ist vor jedem sicher, aber oft rechtfertigt das Ergebnis den Aufwand nicht. Man muss eine CD nicht vor Leuten schützen - da muss ich Uncle C recht geben, die wahrscheinlich eh garkein interesse daran haben. Und für einen Delphi-Newbee ist das schon eine kleine Herausforderung...

@joya:

Du könntest ein Delphi-Programm schreiben - das ist dann eine EXE, dass folgendes tut:

1. Finde heraus welches das CD-Laufwerk ist.
Dazu musst du natürlich bedenken, dass es auch 2 Laufwerke in einem System geben kann.
Ein bissel Code findest du hier.

2. Prüfe ob die Datei X im Unterverzeichnis Y vorhanden ist.
Infos dazu kannst du unter dem Stichpunkt Hier im Forum suchenFileExists finden oder die Delphi-Hilfe bemühen.

3. Dann könntest du noch schauen, ob in der datei das drinsteht was drin stehen sollte. Das könnten fieserweise
Zeichen sein, die oberhalb von ASCII 127 liegen und somit für den Benutzer Kauderwelsch darstellen.
z.B. deine Seriennummer plus 127 in ASCII. Das kann ein unbedarfter User dann nicht lesen und ggf. leicht
faken. Dazu kannst due die Funktionen 'Ord' und 'Chr' benutzen. (steht ausführlich in der Hilfe)

4. Wenn alles okay ist startest du dein Programm (das game). Eine, für deinen Zweck, recht aufwendige aber sehr gute Funktion
hat Lucky gepostet. Für deinen Zweck reicht aber vielleicht auch eine ein Shellaufruf, denke ich. Musst mal suchen nach 'ShellAPI' und 'ShellExecute'.

5. darfst du nicht vergessen dein Prüf-Programm zu beenden.

Das sollte es eigentlich sein... Habs natürlich jetzt nicht probiert 8)

Bis denne...

Alter Mann 15. Dez 2003 11:18

Re: Program nur bei engelegter CD nutzen
 
Hallo,

Ich habe dieses Problem einmal wie folgt gelöst:

Die Installationsroutine ermittelte über GetVolumeInformation die Serien-Nr. der CD.
Dieser Wert wurde in die Registry geschrieben und jedesmal beim Aufruf mit der CD verglichen.

Das wars, es ist zwar kein Kopierschutz, zwingt jedoch zum einlegen der CD.

joya 15. Dez 2003 12:01

Re: Program nur bei engelegter CD nutzen
 
Ja,

genau das könnte ich brauchen, können sie mir das genauer erklären, wie und wo mache ich so was, (beim install-schield, oder wo), und wie kann ich dann diesen wert aufrufen und vergleichen. wenn sie auch noch code haben, dass wäre prima.

Danke

Tonic1024 15. Dez 2003 12:09

Re: Program nur bei engelegter CD nutzen
 
Hi Alter Mann...

Ist es dann auch so, dass eine zweite CD auf dem Rechner nicht Funktioniert? Hört sich danach an... Und wie würde sich das auf eine Kopie (wie auch immer, ob nun berechtigt oder nicht) der CD auswirken? Ich hab das doch richtig verstanden? Ist die ID der CD selber, oder?

Ist das eine Delphi-Funktion? Wo gibts die? Ist das WinAPI? Code?

Fragen über Fragen... :lol:
Interessiert mich wirklich...

Uncle Cracker 15. Dez 2003 13:18

Re: Program nur bei engelegter CD nutzen
 
Zitat:

Hallo,

Ich habe dieses Problem einmal wie folgt gelöst:

Die Installationsroutine ermittelte über GetVolumeInformation die Serien-Nr. der CD.
Dieser Wert wurde in die Registry geschrieben und jedesmal beim Aufruf mit der CD verglichen.

Das wars, es ist zwar kein Kopierschutz, zwingt jedoch zum einlegen der CD.
Zitat:

Ja,

genau das könnte ich brauchen, können sie mir das genauer erklären, wie und wo mache ich so was, (beim install-schield, oder wo), und wie kann ich dann diesen wert aufrufen und vergleichen. wenn sie auch noch code haben, dass wäre prima.

Danke
Klar, hab jetzt mal ein bisschen rumprobiert und bin zu folgendem Ergebniss gekommen:

Delphi-Quellcode:
uses Registry;

function Seriennummer(Laufwerk: PChar): string;
var
  NotUsed:    DWORD;
  VolumeFlags: DWORD;
  VolumeInfo: array[0..MAX_PATH] of Char;
  VolumeSerialNumber: DWORD;
begin
  GetVolumeInformation(PChar(Laufwerk + ':\'),
    nil, SizeOf(VolumeInfo), @VolumeSerialNumber, NotUsed,
    VolumeFlags, nil, 0);
  Result := Format('%8.8X',[VolumeSerialNumber])
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  Reg: TRegistry;
  Serial, RegSerial: String;
begin
  Serial:=Seriennummer('E');
  try
  Reg:= TRegistry.Create;
  Reg.Rootkey:=HKEY_CURRENT_USER;
  if not Reg.KeyExists('Software\Uncle Cracker')
  then begin
  Reg.Openkey('Software\Uncle Cracker',true);
  Reg.WriteString('Seriennummer', Serial)
  end else begin
  Reg.Openkey('Software\Uncle Cracker',true);
  RegSerial:=Reg.ReadString('Seriennummer');
  if not (RegSerial=Serial) then begin Showmessage('Falsche CD im Laufwerk'); halt
  end;
  end;
  finally
  Reg.Free;
end;
end;

Ist zwar nicht der schönste Code, doch er funktioniert.

Also:

Beim 1. starten schreibt das Programm die CD-Seriennummer in die Registry.
Beim 2. starten überprüft es jedesmal, ob es die gleiche Seriennummer ist wie beim letztem Start auch.

Das ganze könnte man jetzt ins Programm einbauen, doch anstatt Seriennummer('E') zu übergeben einfach den Laufwerkstypen auf dem das Programm gestartet wurde.


[Edit]PS: Falls es noch fragen zum Code gibt, einfach stellen :roll: [/Edit]

Lillebrohr 15. Dez 2003 13:44

Re: Program nur bei engelegter CD nutzen
 
Hi,

Zitat:

Beim 1. starten schreibt das Programm die CD-Seriennummer in die Registry.
Beim 2. starten überprüft es jedesmal, ob es die gleiche Seriennummer ist wie beim letztem Start auch.
Achja, ich liebe meinen Debugger ! :dancer2:
Sowas bringt nichts !! kopierschutz wäre in kürzester zeit behoben, mit der Methode.

Bye

Uncle Cracker 15. Dez 2003 13:50

Re: Program nur bei engelegter CD nutzen
 
Wie gesagt, es ist nur eine simple Methode wie man es machen könnte.

Wie würdest du es sonst machen um es immer noch leicht mit Delphi umzusetzen zukönnen?

Tonic1024 15. Dez 2003 14:05

Re: Program nur bei engelegter CD nutzen
 
Moin

Ich könnte mir auch vorstellen, dass wenn man einen Cracker mit acht verschiedenen Kopierschutz-Funktionen (warum nicht auch zwanzig oder mehr) gleichzeitig konfrontiert, und sich auch noch ein bissel gewitzt dabei anstellt, dann hat der bald keine lust mehr.

Man kann ja auch die Seriennummer in der Registry crypten. und nach einem unlogischen Muster wechseln lassen.

Jeder einzelne Kopierschutz müsste unabhängig vom anderen funktionieren und einfach nur verwirrend sein und ständig wechselnd.

ABER, wie ich und Uncle C schon mehrfach festgestellt haben: Es macht für ein einfaches SWF oder Flash-Game überhauptkeinen Sinn !!!

Ich denke die Methode von Uncle C ist okay für diese Zwecke - wahrscheinlich sogar überdimensioniert :lol:

Bis denne...

Uncle Cracker 15. Dez 2003 14:47

Re: Program nur bei engelegter CD nutzen
 
man kann diese Abfrage auch etwas sicherer machen, indem man entweder DLLs nutzt oder mehrer Threads hat, dies bringt schon die meisten Cracker durcheinander und man sollte nicht nur eine Abfrage nach der Seriennummer haben.

Lillebrohr 15. Dez 2003 15:34

Re: Program nur bei engelegter CD nutzen
 
Zitat:

man kann diese Abfrage auch etwas sicherer machen, indem man entweder DLLs nutzt oder mehrer Threads hat, dies bringt schon die meisten Cracker durcheinander und man sollte nicht nur eine Abfrage nach der Seriennummer haben.
Dlls bringen denke ich mal niemanden durcheinander, und mehrere threads ... naja.

Ich überlege mir aber auch schon was.
be Patient !!


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:54 Uhr.

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