Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   Привязка к железу - Делфи (https://forum.antichat.xyz/showthread.php?t=73561)

StalkerKill 12.06.2008 18:54

Привязка к железу - Делфи
 
Народ, научите привязывать к железу, просто тупо интересно как это делается. К винту, процу и т.д. По барабану. Спрашивал на хакере - дельного ничего не посказали. Буду ждать вашей помощи - можно и сорцы :rolleyes: еще :D

Fata1ex 12.06.2008 19:15

Делаешь демо, которое при запуске на компе клиента считывает его уникальный номер. Он отсылает демо тебе. Ты преобразовываешь этот номер и вставляешь проверку в программу. При каждом запуске программы считываешь этот номер снова, преобразовываешь его локально и сравниваешь с уже записанным.

Этим уникальным номером может быть любая хня, от серии Биоса до номера процессора )

Fata1ex 12.06.2008 19:23

Цитата:

просто тупо интересно как это делается
Это можно понять вполне однозначно, как и сделал я. Тупо объяснил принцип.
Если же тебе интересен "код", то надо писать - Хочу чтобы сделали все за меня, а это уже не сюда.
П.С.
Не думаю, кто-нибудь будет выкладывать методы привязки, которых нет в паблике. Если ты их выложил, то привязка стала чистой формальностью, как в большинстве случаев.
Поизучай крякмисы.

t04 12.06.2008 23:37

Вот один из способов:
__http://forum.antichat.ru/thread72378.html

0verbreaK 13.06.2008 21:10

Цитата:

Сообщение от StalkerKill
Народ, научите привязывать к железу, просто тупо интересно как это делается. К винту, процу и т.д. По барабану. Спрашивал на хакере - дельного ничего не посказали. Буду ждать вашей помощи - можно и сорцы :rolleyes: еще :D

Один из вариантов использовать привязку к CD-ROM, функция WinAPI, GetDriveType, возвращаемое значение DRIVE_CDROM - если диск.

Pir4tt 13.06.2008 22:59

Получаем имя компа:
Код:

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, про диск я чёто не понял)) ну есть сидиром в компе и что дальше? он много где есть

п.с. тут надо комбинировать инфу с железок а не использовать какой-то один параметр..


Время: 17:46