|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
28.11.2006, 14:38 | #1 |
Форумчанин
Регистрация: 03.11.2006
Сообщений: 321
|
индентификация по оборудованию
Сразу скажу, что в WinApi не силён, поэтому не смейтесь.
Подскажите пожалуйста можно ли защитить программу от копирования по установленному оборудованию. У меня есть предположение, что процессор, либо материнская плата имеет свой уникальный Id. Если это возможно, подскажите. Заранее благодарен. |
28.11.2006, 16:50 | #2 |
Delphi/C++/C#
Участник клуба
Регистрация: 29.10.2006
Сообщений: 1,972
|
блин... я думал, что только я до этого додумался (ещё пол года назад у меня возникла эта идея)
незнаю как насчёт уникальности, я делал просто: определял оборудование: частота проца, размер оп, имя юзера и прочее, потом генерировал код для всего этого оборудования (смени хоть что-нибудь - и всё, прога не запустится). процесс регистрации конечно по интернету: прога отправляет этот уникальный код, мы его как-нибудь шифруем (по определённому алгоритму, и отправляем обратно - по мылу). в программе стоит тот же шифратор, при каждой загрузке он сканирует выбранное нами оборудование, и сравнивает с кодом, который записан в файле (мы его по мылу отправили). если совпадает, то всё ок, если нет, то выход, или окошко типа зарегьте версию... Последний раз редактировалось zetrix; 28.11.2006 в 16:57. |
28.11.2006, 22:39 | #3 |
Embedder
Пользователь
Регистрация: 01.11.2006
Сообщений: 68
|
ну да, и стоит юзеру памяти добавить, или ,не дай бог, проц поменять, и все! платите снова денежку... хорошая идея!
[SHIFT] вправо, [SHIFT] влево считается [ESCAPE]ом и карается REBOOTом!
|
29.11.2006, 11:12 | #4 |
Александр
Администратор
Регистрация: 28.10.2006
Сообщений: 17,526
|
ну вообще это троян будет. а для серьёзных компаний это не есть гуд. вообще нужно к сетевому оборудованию привязываться. если я не болтаю, то на карточке можно легално определять уникальный индификатор. а вот как другой вопрос.
если никто не ответит, поднимите позже тему, постараюсь поискать инфу. |
30.11.2006, 06:43 | #5 |
Новичок
Джуниор
Регистрация: 30.11.2006
Сообщений: 2
|
многие буржуины используют идентификационный код винды (он каждый раз при установке будет разный) + мас адрес....ну естественно при переустановке винды или подмене маса надо платить денежку заново.
по оборудованию навряд ли получиться...юзер обязательно что то да заменит. имхо |
01.12.2006, 07:58 | #6 |
Форумчанин
Регистрация: 03.11.2006
Сообщений: 321
|
На некоторых компьютерах мне уже встречалось, что при загрузке компьютера пишется id процессора и id материнки(возможно Bios). Можно было -бы запомнить этот id в потом поискать в реестре где он находится. Проблема в том, что такие компы больше не попадались, а программа, которую надо защитить уже почти готова.
|
01.12.2006, 13:37 | #7 |
Павел Сергеевич
Форумчанин
Регистрация: 05.11.2006
Сообщений: 665
|
procedure TSysteinlnfoForm.GetCompInfo; var SystemIniFile:TIniFile; RegFile:TReglniFile; PathArray : array [0..255] of char; OSVersion: TOSVersionlnfo; begin //Компьютер Имя компьютера(string):=SystemIniFile.ReadString('boot.de scription', ' system, drv', 'Unknown' )
SystemlniFile.Free; RegFile:=TRegIniFile.Create('Softwa re'); RegFile.RootKey:=HKEY JLOCAL_MACHINE; RegFile.OpenKey('hardware',false); RegFile.OpenKey('DESCRIPTION', false) ; RegFile.OpenKey('System',false); RegFile.OpenKey('CentralProcessor', false); Имя процессора(string):=RegFile.ReadString('0','Identifie r','Unknown' Процессор MMX(string):=RegFile.ReadString('O','MMXIdenti fier','Unknown'); Поставщик-производитель(string):=RegFile.ReadString('0','Vendorlde ntifier','Unknown'); RegFile.CloseKey; //OS OSVersion.dwOSVersionlnfoSize := SizeOf(OSVersion); if GetVersionEx(OSVersion) then begin Версия OS(string):= Format(''%d.%d (%d.%s)', [OSVersion.dwMajorVersion, OSVersion.dwMinorVersion, (OSVeraion.dwBuildNumber and $FFFF), OSVersion.szCSDVersion]); case OSVersion.dwPlatformID of VER PLATFORM WIN32S: Платформа Windows(string):= 'Windows 3.1'; VER_PIATFORM_WIN32_WINDOWS: Платформа Windows(string):= 'Windows 95'; VER_PLATFORM_WIN32_NT: Платформа Windows(string):= 'Windows NT'; else Платформа Windows(string) := ''; end; end; RegFile.OpenKey('SOFTWARE',false); RegFile.OpenKey('Microsoft',false); RegFile.OpenKey('Windows',false); Имя системы(string):=RegFile.ReadString('CurrentVersio n','ProductName','Unknown'); Имя организации(string):= RegFile.ReadString('CurrentVersion' ,'RegisteredOrganization','Unknown' ); Имя владельца(string):= RegFile.ReadString('CurrentVersion' ,'RegisteredOwner','Unknown'); Серийный номер(string):= RegFile.ReadString('CurrentVersion' ,'Productld','Unknown'); RegFile.Free; FillCharfPathArray, SizeOf(PathArray), #0); GetWindowsDirectory(PathArray, 255) ; Директория Windows(string):= Format('Is',[PathArray]); FillChar(PathArray, SizeOf(PathArray), #0); ExpandEnvironmentStrings('%TEMP%', PathArray, 255); Директория Temp(string):=Format('%s',[PathArray]); end; Кто-то возможно сейчас скажет, что он это уже где-то видел, и будет прав! Взято из "Delphi глазами хакера" М. Феленова. Там можно найти еще много полезностей!
Познавая других, мы познаем себя.
С'est la vie... |