Kopierschutz mit Delphi erstellen

26.07.2006, 17:44
Member

Beiträge: 343
#1 Tach Leute
Ich wollte für ein paar Programme in Delphi einen Kopierschutz erstellen
der soll so funktionieren:
Das Programm list die Seriennummer von Windoof der Festplatte dm Prozessor und dem CD ROM laufwerk aus,
daraus berechnet er eine Hardware ID mit der (nur) ich eine Seriennummer Berechnen Kann (so irgendwie ist der Schutz auch bei styl XP)
aber nun die Frage:
WIE lese ich die ganzen Nummern aus??

Vielen Dank schonmal im Voraus
__________
Es ist richtig, wenn Politiker behaupten: Der Mensch ist Mittelpunkt.
Falsch ist nur die Schreibweise gemeint ist: Der Mensch ist Mittel. Punkt.
Dieser Beitrag wurde am 26.07.2006 um 19:33 Uhr von Typ editiert.
Seitenanfang Seitenende
27.07.2006, 09:31
Member

Beiträge: 3306
#2 Delphi ist für diese Aufgabe denkbar schlecht geeignet, sowas macht man mit C oder gleich Assembler. Dazu findet man aber bei Google genug Zeug z. B. hier:
http://www.delphipraxis.net/topic44552.html
__________
Bitte keine Anfragen per PM, diese werden nicht beantwortet.
Seitenanfang Seitenende
27.07.2006, 13:14
Member

Themenstarter

Beiträge: 343
#3 igentwie hat mein delphicompilier bei den Code immer was zu kammellen

zur googlesuche nach welchen begiffen wurde den gegoogelt??
irgentw weis ich nicht wonach ich (bei den begriffen) suchen soll
__________
Es ist richtig, wenn Politiker behaupten: Der Mensch ist Mittelpunkt.
Falsch ist nur die Schreibweise gemeint ist: Der Mensch ist Mittel. Punkt.
Seitenanfang Seitenende
27.07.2006, 13:17
Member

Beiträge: 3306
#4 "delphi festplatten ID auslesen"

Wahrscheinlich musst du in deiner IDE erst irgendwo Inline Assembler aktivieren. Frag mich aber nicht wo.
__________
Bitte keine Anfragen per PM, diese werden nicht beantwortet.
Seitenanfang Seitenende
27.07.2006, 13:21
Member

Themenstarter

Beiträge: 343
#5 danke
(das muss ich anhägen weil sonz gemecket protecus antwort ist nicht 18 zeichen lang)
__________
Es ist richtig, wenn Politiker behaupten: Der Mensch ist Mittelpunkt.
Falsch ist nur die Schreibweise gemeint ist: Der Mensch ist Mittel. Punkt.
Seitenanfang Seitenende
27.07.2006, 16:26
Member
Avatar shoKwave

Beiträge: 74
#6 Hi,

ich programmier auch 'n bissl mit Delphi rum. Der nachfolgende Code is für die CPU. Vielleicht hilft dir das 'n Stück weiter.


function IsCPUID_Available : Boolean; register;
asm
PUSHFD {direct access to flags no possible, only via stack}
POP EAX {flags to EAX}
MOV EDX,EAX {save current flags}
XOR EAX,ID_BIT {not ID bit}
PUSH EAX {onto stack}
POPFD {from stack to flags, with not ID bit}
PUSHFD {back to stack}
POP EAX {get back to EAX}
XOR EAX,EDX {check if ID bit affected}
JZ @exit {no, CPUID not availavle}
MOV AL,True {Result=True}
@exit:
end;

function GetCPUID : TCPUID; assembler; register;
asm
PUSH EBX {Save affected register}
PUSH EDI
MOV EDI,EAX {@Resukt}
MOV EAX,1
DW $A20F {CPUID Command}
STOSD {CPUID[1]}
MOV EAX,EBX
STOSD {CPUID[2]}
MOV EAX,ECX
STOSD {CPUID[3]}
MOV EAX,EDX
STOSD {CPUID[4]}
POP EDI {Restore registers}
POP EBX
end;

function GetCPUVendor : TVendor; assembler; register;
asm
PUSH EBX {Save affected register}
PUSH EDI
MOV EDI,EAX {@Result (TVendor)}
MOV EAX,0
DW $A20F {CPUID Command}
MOV EAX,EBX
XCHG EBX,ECX {save ECX result}
MOV ECX,4
@1:
STOSB
SHR EAX,8
LOOP @1
MOV EAX,EDX
MOV ECX,4
@2:
STOSB
SHR EAX,8
LOOP @2
MOV EAX,EBX
MOV ECX,4
@3:
STOSB
SHR EAX,8
LOOP @3
POP EDI {Restore registers}
POP EBX
end;

function GetCPUInfo():String;
var
CPUID : TCPUID;
I : Integer;
S : TVendor;
begin
for I := Low(CPUID) to High(CPUID) do
CPUID[I] := -1;
if IsCPUID_Available then
begin
CPUID:=GetCPUID;
Result:=GetCPUVendor+' Type '+IntToStr(CPUID[1] shr 12 and 3)+' Family '+IntToStr(CPUID[1] shr 8 and $f)+' Model '+IntToStr(CPUID[1] shr 4 and $f)+' Stepping '+IntToStr(CPUID[1] and $f);
end else
begin
Result := 'CPUID not available';
end;
end;


Und Schluß!
__________
Ich trage schwarz, bis es was dunkleres gibt.
Seitenanfang Seitenende
27.07.2006, 20:57
Member

Themenstarter

Beiträge: 343
#7 danke
hier meckert wennigstens der Compilier nicht
aber welche funktion muss ich aufrufen GetCPUInfo oder??
__________
Es ist richtig, wenn Politiker behaupten: Der Mensch ist Mittelpunkt.
Falsch ist nur die Schreibweise gemeint ist: Der Mensch ist Mittel. Punkt.
Seitenanfang Seitenende
28.07.2006, 10:26
Member
Avatar shoKwave

Beiträge: 74
#8 Moin,

genau! Die gibt 'nen String zurück.
Sollte eigendlich nur 'n Beispiel sein wie Assemblercode in Delphi eingebunden wird, aber vielleicht kannst du die Funktion ja gleich für dein Progi nutzen. ;)

mfg shoKwave
__________
Ich trage schwarz, bis es was dunkleres gibt.
Seitenanfang Seitenende
28.07.2006, 10:45
Member

Themenstarter

Beiträge: 343
#9 nee ich habs nochmal probier wi cih dachte der würde nicht meckern hatt der gakeine exe erstellt
und dan hab ich den compilier (lazarus) neu gestartet und dan ochmal probiert
dan fing das gemecker wieder an
der hat dan in der 2zeile asm rot makiert

Zitat

Wahrscheinlich musst du in deiner IDE erst irgendwo Inline Assembler aktivieren. Frag mich aber nicht wo
wie aktivirt man das bei Lazarus
__________
Es ist richtig, wenn Politiker behaupten: Der Mensch ist Mittelpunkt.
Falsch ist nur die Schreibweise gemeint ist: Der Mensch ist Mittel. Punkt.
Seitenanfang Seitenende
28.07.2006, 11:19
Member
Avatar shoKwave

Beiträge: 74
#10 Boah,

ich war bis jetzt in der Annahme, dass du Delphi benutzt. Jetzt bin ich auch überfragt.
Auf der HP von FreePascal und im Programmersguide (http://www.freepascal.org/docs.html) hab ich auf die schnelle nix spezielles gefunden.

sorry
__________
Ich trage schwarz, bis es was dunkleres gibt.
Seitenanfang Seitenende
28.07.2006, 23:18
Member

Themenstarter

Beiträge: 343
#11

Zitat

sorry
wie so sorry du musst mir NICHT helfen
trotzdem danke
__________
Es ist richtig, wenn Politiker behaupten: Der Mensch ist Mittelpunkt.
Falsch ist nur die Schreibweise gemeint ist: Der Mensch ist Mittel. Punkt.
Seitenanfang Seitenende
Um auf dieses Thema zu ANTWORTEN
bitte erst » hier kostenlos registrieren!!

Folgende Themen könnten Dich auch interessieren: