Просмотр полной версии : Привязка к железу - Делфи
StalkerKill
12.06.2008, 18:54
Народ, научите привязывать к железу, просто тупо интересно как это делается. К винту, процу и т.д. По барабану. Спрашивал на хакере - дельного ничего не посказали. Буду ждать вашей помощи - можно и сорцы :rolleyes: еще :D
Делаешь демо, которое при запуске на компе клиента считывает его уникальный номер. Он отсылает демо тебе. Ты преобразовываешь этот номер и вставляешь проверку в программу. При каждом запуске программы считываешь этот номер снова, преобразовываешь его локально и сравниваешь с уже записанным.
Этим уникальным номером может быть любая хня, от серии Биоса до номера процессора )
просто тупо интересно как это делается
Это можно понять вполне однозначно, как и сделал я. Тупо объяснил принцип.
Если же тебе интересен "код", то надо писать - Хочу чтобы сделали все за меня, а это уже не сюда.
П.С.
Не думаю, кто-нибудь будет выкладывать методы привязки, которых нет в паблике. Если ты их выложил, то привязка стала чистой формальностью, как в большинстве случаев.
Поизучай крякмисы.
Вот один из способов:
__http://forum.antichat.ru/thread72378.html
0verbreaK
13.06.2008, 21:10
Народ, научите привязывать к железу, просто тупо интересно как это делается. К винту, процу и т.д. По барабану. Спрашивал на хакере - дельного ничего не посказали. Буду ждать вашей помощи - можно и сорцы :rolleyes: еще :D
Один из вариантов использовать привязку к CD-ROM, функция WinAPI, GetDriveType, возвращаемое значение DRIVE_CDROM - если диск.
Получаем имя компа:function GetCompName: string;
var
buffer: array[0..255] of char;
size: dword;
begin
size := 256;
if GetComputerName(buffer, size) then
Result := buffer
else
Result := ''
end;Имя юзверя:function GetUserName: string;
var
Size : cardinal;
PRes : PChar;
BRes : boolean;
begin
Size := MAX_COMPUTERNAME_LENGTH + 1;
PRes := StrAlloc(Size);
BRes := GetUserName(PRes, Size);
if BRes then Result:=StrPas(PRes) else Result:='';
end;Тип проца:function ProcType: string;
var
lpSystemInfo : TSystemInfo;
begin
GetSystemInfo(lpSystemInfo);
Result:=IntToStr(lpSystemInfo.dwProcessorType);
end;Ну и допустим количество памяти:function MemorySize: string;
var
lpMemoryStatus : TMemoryStatus;
begin
lpMemoryStatus.dwLength := SizeOf(lpMemoryStatus);
GlobalMemoryStatus(lpMemoryStatus);
with lpMemoryStatus do begin
Result:=Format('%0.0f',[dwTotalPhys div 1024 / 1024])+' Mb';
end;
end;
Всё это соединяет, шифруем каким-нить своим алго, и передаём себе. У себя же расшифровываем, определяем все железки и генерим другим алго ключег, который сверяется в софтине. Всё элементарно. Так же это просто пример того что можно получать стандартными апи, запусти любой бенчмарк и увидишь как много инфы к которой можно привязаться ;) Так же рекомендую использовать куски ключа при расчётах важных функций в программе, т.е. включать их в алгоритм а не ставить тупую сверку значений, отшибающуюся битхаком B)
ps. 0verbreaK, про диск я чёто не понял)) ну есть сидиром в компе и что дальше? он много где есть
п.с. тут надо комбинировать инфу с железок а не использовать какой-то один параметр..
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot