| Author |
Message
|
machoney Poziom 15

Joined: 23 Feb 2004 Posts: 210 Location: Tarnów
|
#1
10 Mar 2008 16:06 Jak zabezpieczyć aplikację przed kopiowaniem? |
|
|
|
Witam,
napisałem sofcik, który chcę wypuścić w wersji demo w pełni funkcjonalne przez 30 dni. Następnie program ma poprosić o klucz. Program jest w instalce i klucz powinien być przypisany do komputera. Znalazłem coś odnośnie woluminu dysku ale to nie rozwiązanie bo po formacie wolumin się zmienia i klucz nie zadziała. Czy ktoś ma sposób na pobranie w delphi lub przez WinAPI sprzętowego numeru np. dysku, procesora lub biosu? Może jest na to inny sposób. proszę o pomoc, pzd
|
|
| Back to top |
|
 |
Guest Poziom 10

|
#2
10 Mar 2008 17:41 Re: Jak zabezpieczyć aplikację przed kopiowaniem? |
|
|
|
GetVolumeSerialNumber powinno wystarczyć.
|
|
| Back to top |
|
 |
Google

|
#
10 Mar 2008 17:41 |
|
|
|
|
|
| Back to top |
|
 |
machoney Poziom 15

Joined: 23 Feb 2004 Posts: 210 Location: Tarnów
|
#3
10 Mar 2008 18:14 Re: Jak zabezpieczyć aplikację przed kopiowaniem? |
|
|
|
próbowałem coś takiego:
| Code: |
function ID: string;
var
VolumeSerialNumber : DWORD;
MaximumComponentLength : DWORD;
FileSystemFlags : DWORD;
SerialNumber : string;
begin
GetVolumeInformation ( 'C:', nil, 0, @VolumeSerialNumber, MaximumComponentLength, FileSystemFlags, nil, 0 );
SerialNumber := IntToHex( HiWord( VolumeSerialNumber ), 4 ) + IntToHex( LoWord( VolumeSerialNumber ), 4 );
Result := SerialNumber;
form1.edit1.text := result;
end;
|
niestety to zwraca mi serial woluminu.
Jaką ma składnię GetVolumeSerialNumber bo nigdy tego nie używałem.
|
|
| Back to top |
|
 |
Guest Poziom 10

|
#4
10 Mar 2008 18:17 Re: Jak zabezpieczyć aplikację przed kopiowaniem? |
|
|
|
| machoney wrote: |
| Jaką ma składnię GetVolumeSerialNumber bo nigdy tego nie używałem. |
Sprawdź w MSDN. Programowanie to głównie korzystanie z dokumentacji.
|
|
| Back to top |
|
 |
machoney Poziom 15

Joined: 23 Feb 2004 Posts: 210 Location: Tarnów
|
#5
10 Mar 2008 19:26 Re: Jak zabezpieczyć aplikację przed kopiowaniem? |
|
|
|
Nie znalazłem jeszcze dokładnego opisu ale z tego co znalazłem mam wrażenie że to jest to samo co GetVolumeInformation. Jesteś pewny że da mi to serial dysku i zarówno z partycji c: jak i z d: wynik będzie ten sam i po formacie się nie zmieni?
|
|
| Back to top |
|
 |
Guest Poziom 10

|
|
| Back to top |
|
 |
machoney Poziom 15

Joined: 23 Feb 2004 Posts: 210 Location: Tarnów
|
#7
10 Mar 2008 20:30 Re: Jak zabezpieczyć aplikację przed kopiowaniem? |
|
|
|
Dlatego szukam czegoś stałego w sprzęcie. Może coś z BIOS-em albo z prockem. Potrzebuję coś co się nie zmieni po formacie
|
|
| Back to top |
|
 |
Guest Poziom 10

|
|
| Back to top |
|
 |
Google

|
#
10 Mar 2008 20:34 |
|
|
|
|
|
| Back to top |
|
 |
machoney Poziom 15

Joined: 23 Feb 2004 Posts: 210 Location: Tarnów
|
#9
10 Mar 2008 20:48 Re: Jak zabezpieczyć aplikację przed kopiowaniem? |
|
|
|
Wybaczam ;)
Wielkie dzięki!! Niestety widocznie moje zdolności poszukiwacza są marne bo siedzę dwa dni i ciągle nic nie miałem. Siadam do przeglądania linów od Ciebie. jeszcze raz wielkie thx
|
|
| Back to top |
|
 |
Guest Poziom 10

|
#10
10 Mar 2008 20:49 Re: Jak zabezpieczyć aplikację przed kopiowaniem? |
|
|
|
Fakt - wpisanie how to get main board serial delphi wymaga odpowiedniego przygotowania ;)
|
|
| Back to top |
|
 |
Google

|
#
10 Mar 2008 20:49 |
|
|
|
|
|
| Back to top |
|
 |
machoney Poziom 15

Joined: 23 Feb 2004 Posts: 210 Location: Tarnów
|
#11
12 Mar 2008 11:51 Re: Jak zabezpieczyć aplikację przed kopiowaniem? |
|
|
|
Niestety u mnie ciągle bez efektów. Mimo dużej ilości różnych linów ciągle nie mogę trafić w 10. Zaczniemy od tego, że piszę w Turbo Delphi i chcę uniknąć dodawania komponentów. Po drugie - dużo znalazłem na temat WMI jednak nie wiem jak z tego skorzystać w TD. Szukam też w WinAPI ale narazie też bez praktycznych efektów.
Jeśli masz jeszcze cierpliwość i wyrozumiałość dla mnie to pomóż. thx
|
|
| Back to top |
|
 |
Xitami Poziom 21

Joined: 10 Aug 2004 Posts: 1126 Location: Gliwice
|
|
| Back to top |
|
 |
machoney Poziom 15

Joined: 23 Feb 2004 Posts: 210 Location: Tarnów
|
#13
12 Mar 2008 16:00 Re: Jak zabezpieczyć aplikację przed kopiowaniem? |
|
|
|
link otrzymany dzięki uprzejmości Roch Brada
http://www.codeguru.pl/article-265.aspx
jest super tylko ja nie potrafię przjść z C# na Delphi. Mam wmiutils.dll i nie wiem co dalej bo nigdy podobnych rzeczy nie robiłem. Narazie bezustannie walczę z tym tematem.
Dodano po 1 [godziny] 1 [minuty]:
Trafiłem na coś takiego
http://www.delphi3000.com/articles/article_3118.asp
wygląda spoko jednak nie mogę w Turbo znaleźć importu do projektu. Po wklejeniu funkcji z linku zgłasza błąd przy deklaracji zmiennych
| Code: |
var // These are all needed for the WMI querying process
Locator: ISWbemLocator;
Services: ISWbemServices;
SObject: ISWbemObject;
ObjSet: ISWbemObjectSet;
SProp: ISWbemProperty;
Enum: IEnumVariant;
Value: Cardinal;
TempObj: OleVariant;
SN: string;
|
Jak powiązać funkcję z wmiutils.dll którą znalazłem w system32??
|
|
| Back to top |
|
 |
Guest Poziom 10

|
#14
12 Mar 2008 16:05 Re: Jak zabezpieczyć aplikację przed kopiowaniem? |
|
|
|
Kolego - z Delphi to Ci za bardzo nie pomogę bo nie miałem z nim styczności, ale mogę podpowiedzieć jakbym to ugryzł w C++, a Ty sobie już to "przetrawisz" ;)
Najpierw, mając już tego dll'a, musisz zalinkować go programie. W tym celu musisz utworzyć plik LIB (w katalogu bin powinno być narzędzie implib: implib -c -f plik.dll plik.lib).
Tak stworzony plik LIB dodajesz do projektu (projects - add) i potem dopiero odwołujesz się do funkcji zawartych w dll.
Generalnie poczytaj sobie o linkowaniu statycznym (jest łatwiejsze) plików dll.
Tylko mogę Ci podpowiedzieć.
Powodzenia :)
P.S: Przeglądając ten link, który podałeś znalazłem to: http://yourpage.blazenet.net/ditto/files/wmidemo.zip i http://users.eastlink.ca/~dblondeau/downloads.htm i jeszcze http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/r_wmicls_6r6t.asp
Sprawdź - może w którymś projekcie będą źródła to sobie zobaczysz co i jak.
|
|
| Back to top |
|
 |
machoney Poziom 15

Joined: 23 Feb 2004 Posts: 210 Location: Tarnów
|
#15
12 Mar 2008 21:57 Re: Jak zabezpieczyć aplikację przed kopiowaniem? |
|
|
|
znalazłem implib ale nie chce mi skonwertować. 'Error : unable to open file'.
Proszę, spróbuj u siebie zrobić ten plik lib.
|
|
| Back to top |
|
 |
Guest Poziom 10

|
#16
13 Mar 2008 12:16 Re: Jak zabezpieczyć aplikację przed kopiowaniem? |
|
|
|
W załączniku masz wykesportowany plik wmiutils.lib. Dodatkowo masz plik wmiutils.def, który możesz otworzyć w notatniku. W nim masz zawarte wszystkie funkcje.
Wygląda tak:
| Code: |
LIBRARY WMIUTILS.DLL
EXPORTS
DllCanUnloadNow @1 ; DllCanUnloadNow
DllGetClassObject @2 ; DllGetClassObject
DllRegisterServer @3 ; DllRegisterServer
DllUnregisterServer @4 ; DllUnregisterServer
|
Suma MD5 dla pliku wmiutils.zip to: cb6205b035118772b7ce6565fdc36564
| Filename: |
wmiutils.zip |
 Download |
| Contents: |
wmiutils.def
, wmiutils.dll
, wmiutils.lib
See all... |
| Filesize: |
43 KB |
| Punkty: |
0 |
|
|
| Back to top |
|
 |
machoney Poziom 15

Joined: 23 Feb 2004 Posts: 210 Location: Tarnów
|
#17
13 Mar 2008 14:07 Re: Jak zabezpieczyć aplikację przed kopiowaniem? |
|
|
|
dzięki,
znalazłem jeszcze coś takiego:
http://cc.codegear.com/download.aspx?id=19255&file=UnitSimpleWMI.pas&ln=1
niestety nie mogę skompilować bo woła o WbemScripting_TLB które
| Code: |
{
You need the WbemScripting_TLB unit, which you can create by installing the type library
<Windows System32>\wbem\wbemdisp.tlb type library using the "Project|Import type library" menu option.
}
|
niby wszystko jest a jednak ... ja tego nie umiem odpalić
|
|
| Back to top |
|
 |
Guest Poziom 10

|
#18
13 Mar 2008 17:05 Re: Jak zabezpieczyć aplikację przed kopiowaniem? |
|
|
|
No a zrobiłeś to co wkleiłeś w code?
|
|
| Back to top |
|
 |
Google

|
#
13 Mar 2008 17:05 |
|
|
|
|
|
| Back to top |
|
 |
machoney Poziom 15

Joined: 23 Feb 2004 Posts: 210 Location: Tarnów
|
#19
14 Mar 2008 09:14 Re: Jak zabezpieczyć aplikację przed kopiowaniem? |
|
|
|
Chyba tu właśnie będzie główny problem - ja mam Turbo Delphi które jest darmowe (również komercyjnie) i nie mam 'Project | Import Type Library' natomiast pytałem znajomego czy w Delphi 7 ma import - on ma. Jeżeli u niego się to skompiluje to będę musiał znaleźć sposób na dodanie typu w Turbo. Dam znać o efektach.
|
|
| Back to top |
|
 |
machoney Poziom 15

Joined: 23 Feb 2004 Posts: 210 Location: Tarnów
|
#20
16 Mar 2008 00:09 Re: Jak zabezpieczyć aplikację przed kopiowaniem? |
|
|
|
jest wszystko ok. Udało mi się dostać do WMI z poziomu Turbo Delphi. WbemScripting_TLB.pas wygenerował Delphi 7 łącznie z plikiem dcu. Po przekopiowaniu do folderu LIB dla Turbo wszystko się kompiluje. Aby dostać sie do WMI pomogła mi funkcja:
| Code: |
function TForm1.GetWMIstring (wmiHost, wmiClass, wmiProperty : string):string;
var // These are all needed for the WMI querying process
Locator: ISWbemLocator;
Services: ISWbemServices;
SObject: ISWbemObject;
ObjSet: ISWbemObjectSet;
SProp: ISWbemProperty;
Enum: IEnumVariant;
Value: Cardinal;
TempObj: OleVariant;
SN: string;
begin
try
Locator := CoSWbemLocator.Create; // Create the Location object
// Connect to the WMI service, with the root\cimv2 namespace
Services := Locator.ConnectServer(wmiHost, 'root\cimv2', '', '', '','', 0, nil);
ObjSet := Services.ExecQuery('SELECT * FROM '+wmiClass, 'WQL',
wbemFlagReturnImmediately and wbemFlagForwardOnly , nil);
Enum := (ObjSet._NewEnum) as IEnumVariant;
while (Enum.Next(1, TempObj, Value) = S_OK) do
begin
SObject := IUnknown(tempObj) as ISWBemObject;
SProp := SObject.Properties_.Item(wmiProperty, 0);
if VarIsNull(SProp.Get_Value) then
result := ''
else
begin
SN := SProp.Get_Value;
result := SN;
end;
end;
except // Trap any exceptions (Not having WMI installed will cause one!)
on exception do
result := '';
end;
end;
|
którą należy wcześniej zadeklarować a do wywołania wpisujemy:
| Code: |
Memo1.Text := getWMIstring('','Win32_BIOS','SerialNumber');
|
WIELKIE DZIĘKI ROCH ZA POMOC I INSPIRACJĘ, ZA TO ŻE MNIE NIE ZOSTAWIŁEŚ W POTRZEBIE!! Pzd
|
|
| Back to top |
|
 |
prokopcio Poziom 22

Joined: 21 Dec 2004 Posts: 1598 Location: Grodków
|
#21
12 Dec 2008 14:38 Re: Jak zabezpieczyć aplikację przed kopiowaniem? |
|
|
|
mam rozumieć, że ktoś (lub aplikacja) musi podać ci nr seryjny biosu a Ty odsyłasz jemu klucz... to jest dobre rozwiązanie ale tylko i wyłącznie dla przejście z wersji demo / full ponieważ do tych wersji 30-dniowe to są darmowe narzędzia hakerskie, które dokładnie prześledzą podczas instalacji Twój program i jednym kliknięciem zrobią kolejne 30dni... śledzą one zmiany w rejestrze, dyskach itd... problem z kluczami pod konkretnego kompa jest również z większą ilością użytkowników programu gdzie musisz każdego obsłużyć ręcznie lub "półautomatycznie".... Sam czasem kombinuję jak się zabezpieczyć i szczerze ręce opadają.
|
|
| Back to top |
|
 |
Chris_W Poziom 23

Joined: 10 Jan 2007 Posts: 2846
|
#22
16 Dec 2008 14:36 Re: Jak zabezpieczyć aplikację przed kopiowaniem? |
|
|
|
Tu jest poważna zaleta VB. Jego pseudo-skryptowe działanie jest trudne do 'łamania'. Pseudo-kodu nie da się tak łatwo rozgryźć.
|
|
| Back to top |
|
 |