Как привязать программу к компьютеру
Необходимо привязать программу на 5-м Билдере в Win2000/XP к конкретному компьютеру. Если кто-нибудь знает, что и где в компьютере есть УНИКАЛЬНОГО (номер материнской платы, винта и т.п.) и как это прочитать из программы, огромная просьба отозваться.
Заранее спасибо
ИМХО, тему нужно было создавать в разделе "Программирование", там, кстати, есть тема о получении параметров оборудования.
А привязаться можно к контрольной сумме БИОСа, ее и получить несложно. Или, скажем, к серийному номеру процессора (правда, только на Интеле он есть). Но лучше всего - сделать аппаратный ключ защиты (может видел такие,на ЛПТ-порт обычно вешаются).
__________________
Лечить и судить умеют и могут все, а вот рассчитать несущую балку?
пропиши свою ветку в реестр винды (запрячь по сильнее) и в принципе все
Vladisl@v
Это слишком просто ломается, обычным Registry Tracker'ом отследить можно. Да и переустановка Винды сотрет все ключики.
__________________
Лечить и судить умеют и могут все, а вот рассчитать несущую балку?
. можно в сектору на винте привязать, а насчет серийного номера поца Intel - должна быть опция в биос включена типа показывать серийник. (processor serial numbel - enabled)
YuriyS, можно воспользоваться старым добрым способом. Во время установки в один из файлов программы (не важно, какой) в хвостик допиши определённую последовательность байт, а затем функцией fseek верни размер файла в такой же, как и был до дописки. При запуске своей программы опять меняй длину того файла (тоже fseek), сравнивай скрытую последовательность с эталоном и возращай длину назад (опять fseek).
Разумеется, файл с этой привязкой НЕ должен иметь размер, кратный размеру кластера (бери за основу 512 - не ошибёшься), иначе трюк не выйдет .
Ой, Vladisl@v уже сказал об этом, сорри!
__________________
- Тайран, что ты наделал?!
- Да, Тайран, что ты сделал?
("Snatch.")
Последний раз редактировалось MoroseTroll; 22.07.2003 в 09:39 .
MoroseTroll
а это при дефрагментации не накроется медным тазом? ведь прога может переместиться в другой сектор без "хвостика".
__________________
Лечить и судить умеют и могут все, а вот рассчитать несущую балку?
__________________
Правильно! Надо найти консенсус. и ногами его! Ногами.
Sanya
В том и изюм, чтобы файл, к которому будет "приписка", НЕ имел размер, кратный 512 и выше. Насчёт дефрагментации: не должно, приличная программа дефрагментирует по кластерам, а не точно по размерам файлов. Проблема возможна, если "приписка" будет к маленькому файлу ( <=4КБ) на NTFS, поскольку он может находится в самом оглавлении. Всё-таки, ты попробуй .
Да и привязка к серийному номеру винта - вполне приличный вариант.
__________________
- Тайран, что ты наделал?!
- Да, Тайран, что ты сделал?
("Snatch.")
Я прям недавно такой хренью занимался.
Вобчем делал я так. Прога сначала определяла ядро (9х или NT)
Читала с реестра [HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\Current Version](для NT, для 9х просто \Windows\) параметр 'ProductID' и XORил его в 32 бита. А параметр 'SystemRoot' запминал.
Потом юзал GetVolumeInformaton(SystemRoot. ) и получал 32 битный серийник системного тома.
Потом собирал вместе 5 по 32 бита.
ещё 32 бита - это ина о версии проги, ещё 32 - это обратный ключ, ещё 32 бита хешировали сверху предверущие четыре DWORDa. Потом эти 160 бит я разбивал на 32 пятибитовых знака и получались серийники таково вида (DFNV-98P5-7N4P-475M-VPQ4-578N-V489-7GFR).
Если человек хочит зарегить свою прогу, то шлёт мне бабло и серийник, а я ему шлю аналогичный серийник активизации с изменёнными 32 битами хеширования и 32 битами обратного ключа.
Прога у чела делает обратный процесс и сверяет VolumeSN и ProductID.
Работает супер. Ни каких исключений.
Возникла необходимость защитить программу на Delphi от распространения, т.е. привязать каждую копию программы к конкретному компьютеру. Посоветуйте к чему лучше организовать привязку, у какого оборудования есть уникальные идентификаторы, к которым можно спокойной привязаться или может вообще есть готовые инструменты.
Заранее спасибо за ответы.
Будь готов отяготить свою карму тонной проклятий, которые непременно пошлют юзеры, делающие апгрейд на свою машину Вот посмотри ещё, как раз для привязки софта к железу: AzSDK.HardwareID Будь готов отяготить свою карму тонной проклятий, которые непременно пошлют юзеры, делающие апгрейд на свою машинуВ принципе согласен. Но разве мы все не проклинаем микрософт при апгрейде своего компьютера?
P.S. Если конечно у нас лицензионная версия Windows.
Интересно, почему противники привязки софта к железу по умолчанию имеют ввиду "ширпотребный" софт, "раздаваемый направо и налево" за вмз? А если речь идет, например, о специализированном, корпоративном софте, который нужно хоть как-то защитить от выноса за пределы "конторы" и распространения среди конкурентов?
в специальном корпоративном софте и принципы другие, там вполне можно ввести такие вещи как периодический запрос сервера на предмет легальности, или вообще перенос части ключевой логики на сервер.
Хотя всё это не спасет, в данной области масштабы совсем другие, чем в обычных шароварах, и тем, кому прога нужна, не составит труда нанять команду крякеров, которые расковыряют любую самопальную защиту.
PS: Сервер - это хорошо, но привязка к железу тоже не плохо - например, позволяет "шабашить" на дому, когда сервер "отдыхает"
Если привязываться по серьезке, то можно попробовать, как уже тут писали аппаратные ключи типа HASP, Guardant, Senselock.
Если не по серьезке, лучше возьми какое-нибудь стороннее решение с функцией лицензирования, типа Armadillo или VMProtect,
меньше будешь напрягаться, заодно и сложность взлома своей программы повысишь.
Потому что вид программы не указан, а в большинстве случаев в итоге оказывается что речь идёт о простом Shareware.
Public Declare Function GetVolumeInformation Lib "kernel32" Alias "GetVolumeInformationA" (ByVal lpRootPathName As String, ByVal
lpVolumeNameBuffer As String, ByVal nVolumeNameSize As Long, lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long,
lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, ByVal nFileSystemNameSize As Long) As Long
Public Function DriveSerial() As Long
'Считывает серийный номер носителя (диска, на котором размещена программа)
>иногда он может смениться при простой переустановки виндоуса или еще какими операциями с диском
Я сделал защиту программу через серийник.
Вот эти "или еще какими операциями с диском" меня интересуют!
Сменили вид файловой системы , перезарядили Windows , переразбили заново разделы винта , все это смена серийника.
При каких еще операциях с диском может измениться серийник?
Юзеры определят серийник раздела С и мне его сообщат. Я вошью серийник в код VBA и наилучшими пожеланиями отдам прогу юзерам . И просто предупрежу, что при сносе системы, изменении файловой системы и установке другого виндоуса программа работать не будет. И в хелпе тоже самое укажу. И тогда перед всякими действиями "изменения " серийника я беру данные из программы и сливаю в версию с другим серийником. Конечно , здесь могут быть проблемы, но цель одна запретить работу программы на других компах.
>- привязка юзеров к техподдержке, без которой прога не имеет никакой ценности
Public Sub SpecificationsProcessor()
Dim strComputer As String
Dim objWMIService As Object, colProcessor As Object, objProcessor As Object
Эта функция в Win9X пахать будет?
А побольше о этом.
этот вариант подходит для прог, в которых либо часто меняются данные либо часто меняются алгоритмы работы.
Тоесть ценность имеет не сама прога, а актуальность ее алгоритмов и данных.
ну а дальше все понятно - пользователь получат прогу совершенно бесплатно, а вот за ее актуальность надо платить.
Возникла необходимость защитить программу на Delphi от распространения, т.е. привязать каждую копию программы к конкретному компьютеру. Посоветуйте к чему лучше организовать привязку, у какого оборудования есть уникальные идентификаторы, к которым можно спокойной привязаться или может вообще есть готовые инструменты.
Заранее спасибо за ответы.
Будь готов отяготить свою карму тонной проклятий, которые непременно пошлют юзеры, делающие апгрейд на свою машину Вот посмотри ещё, как раз для привязки софта к железу: AzSDK.HardwareID Будь готов отяготить свою карму тонной проклятий, которые непременно пошлют юзеры, делающие апгрейд на свою машинуВ принципе согласен. Но разве мы все не проклинаем микрософт при апгрейде своего компьютера?
P.S. Если конечно у нас лицензионная версия Windows.
Интересно, почему противники привязки софта к железу по умолчанию имеют ввиду "ширпотребный" софт, "раздаваемый направо и налево" за вмз? А если речь идет, например, о специализированном, корпоративном софте, который нужно хоть как-то защитить от выноса за пределы "конторы" и распространения среди конкурентов?
в специальном корпоративном софте и принципы другие, там вполне можно ввести такие вещи как периодический запрос сервера на предмет легальности, или вообще перенос части ключевой логики на сервер.
Хотя всё это не спасет, в данной области масштабы совсем другие, чем в обычных шароварах, и тем, кому прога нужна, не составит труда нанять команду крякеров, которые расковыряют любую самопальную защиту.
PS: Сервер - это хорошо, но привязка к железу тоже не плохо - например, позволяет "шабашить" на дому, когда сервер "отдыхает"
Если привязываться по серьезке, то можно попробовать, как уже тут писали аппаратные ключи типа HASP, Guardant, Senselock.
Если не по серьезке, лучше возьми какое-нибудь стороннее решение с функцией лицензирования, типа Armadillo или VMProtect,
меньше будешь напрягаться, заодно и сложность взлома своей программы повысишь.
Потому что вид программы не указан, а в большинстве случаев в итоге оказывается что речь идёт о простом Shareware.
Читайте также: