citanje broj procesora ili nekog dugog hardvera. Potreban mi e za zastitu aplikacija.
citanje broj procesora
Zaključano
Zakačeno
1. Citanje broja procesora:
Mnogi procesori ili nemaju taj broj ili se citanje moze onemoguciti iz BIOS-a...
2. Citanje hardverskog broja HD:
Cesto ne radi za RAID boot diskove... (ipak, ovo je moj izbor)
3. MAC adrese (mrezna karica):
Cesti ima vise ovih adresa, kod novijih kartica je moguce promeniti ovaj broj softverski (?!)
4. Volume ID particije:
Menja se 'dok trepnes'...
5. Čitanje broja BIOS-a.
Problem sa starijim sistemima, privilegijama, standardima za ovaj broj...
6. ... ostali predlozi ?
Prema tome, ne postoji jedinstveno a dobro resenje... Obicno su najbolja kompozitna resenja...
Ja idem ovim redosledom: ili 2, ili 3, ili 4+jos nesto u kombinaciji sa 4.
E sad, sta si odlucio... ? postoji dosta koda, na primer za HD je bilo i ovde na forumu...
Mnogi procesori ili nemaju taj broj ili se citanje moze onemoguciti iz BIOS-a...
2. Citanje hardverskog broja HD:
Cesto ne radi za RAID boot diskove... (ipak, ovo je moj izbor)
3. MAC adrese (mrezna karica):
Cesti ima vise ovih adresa, kod novijih kartica je moguce promeniti ovaj broj softverski (?!)
4. Volume ID particije:
Menja se 'dok trepnes'...
5. Čitanje broja BIOS-a.
Problem sa starijim sistemima, privilegijama, standardima za ovaj broj...
6. ... ostali predlozi ?
Prema tome, ne postoji jedinstveno a dobro resenje... Obicno su najbolja kompozitna resenja...
Ja idem ovim redosledom: ili 2, ili 3, ili 4+jos nesto u kombinaciji sa 4.
E sad, sta si odlucio... ? postoji dosta koda, na primer za HD je bilo i ovde na forumu...
Pogledaj ovo:
http://delphi.about.com/od/windowsshellapi/a/volumeserial.htm
Takođe, pogledaj fajl uz poruku.
http://delphi.about.com/od/windowsshellapi/a/volumeserial.htm
Takođe, pogledaj fajl uz poruku.
Potpis
mxProtector - za zaštitu. Mislim da ima na Torry -ju.
ID procesora, probaj sa ovom funkcijom:
ID procesora, probaj sa ovom funkcijom:
Code:
...
function cpuid: dword;
const
ID_BIT = $200000; // EFLAGS ID bit
type
TCPUID = array[1..4] of Longint;
var
CPUID: TCPUID;
I: integer;
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;
begin
for I := Low(CPUID) to High(CPUID) do CPUID[I] := -1;
if IsCPUID_Available then CPUID := GetCPUID;
Result := 10000 * CPUID[1] + CPUID[4];
end;
...
...
function cpuid: dword;
const
ID_BIT = $200000; // EFLAGS ID bit
type
TCPUID = array[1..4] of Longint;
var
CPUID: TCPUID;
I: integer;
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;
begin
for I := Low(CPUID) to High(CPUID) do CPUID[I] := -1;
if IsCPUID_Available then CPUID := GetCPUID;
Result := 10000 * CPUID[1] + CPUID[4];
end;
...
Potpis
Someone's sitting in the shade today because someone planted a tree a long time ago.
mxProtector nije besplatan. AFAIK, verzija za D6 jeste besplatna, ostale nisu.
Evo još jedne komponentice za pravljenje shareware programa. Nažalost, nemam nikakvu dokumentaciju
Evo još jedne komponentice za pravljenje shareware programa. Nažalost, nemam nikakvu dokumentaciju
Potpis
Prvo ako vec praviti zastitu za aplikaciju nije dovoljna samo koponenta da vam to obavi. mxProtector je dobra(Koliko se ja sjecam besplatno, ali moze biti svasta), ali u uz to potrebno je malo i aplikaciju dizajnirati kako treba. Malo savjeta:
Najvaznije procedure za provjeru validnosti aplikacije ne nazivati tako da se po imenu poznaju.
Te procedure nikad odvajati od sveka neko najbolje zajedno kod za provjeru strpati u neku vaznu proceduru za vasu aplikaciju tako ako hacker iskljuci tu proceduru aplikacija otkaze.
Nestavljati u aplikaciju stringove tipa ("Please registre!", "You enter wrong key", ....) jer se po tome lako mogu naci dijelovi koda gdje se zastita nalazi i jednostavno preskociti.
U program nestavljati proceduru koja generise kljuc. Lako se ta procedura moze iskoristiti za kreiranje kluceva.
Kad se pravi Trial verzija, nemojte da se zastita svodo na iskljuceno dugme ili tako nesto jer to je bas lako ukljuciti, naj bolje da trial verzija uopste nije kompletna verzija programa
...
Ja obicno za zastitu koristim vise procedura. Koristiti Registry, ADS(Kod ntfs particija) itd...
Najvaznije procedure za provjeru validnosti aplikacije ne nazivati tako da se po imenu poznaju.
Te procedure nikad odvajati od sveka neko najbolje zajedno kod za provjeru strpati u neku vaznu proceduru za vasu aplikaciju tako ako hacker iskljuci tu proceduru aplikacija otkaze.
Nestavljati u aplikaciju stringove tipa ("Please registre!", "You enter wrong key", ....) jer se po tome lako mogu naci dijelovi koda gdje se zastita nalazi i jednostavno preskociti.
U program nestavljati proceduru koja generise kljuc. Lako se ta procedura moze iskoristiti za kreiranje kluceva.
Kad se pravi Trial verzija, nemojte da se zastita svodo na iskljuceno dugme ili tako nesto jer to je bas lako ukljuciti, naj bolje da trial verzija uopste nije kompletna verzija programa
...
Ja obicno za zastitu koristim vise procedura. Koristiti Registry, ADS(Kod ntfs particija) itd...
Hvala na sve informacije i savete. Sve je OK, medjutim izgleda nema 100% zastite.
Nije "izgleda" nego sigurno nema 100% zaštite. Sve što čovek napravi, čovek može i da razbije. Nažalost, tako je