|
Привязка к железу. WMI и другие способы.
|
|||
---|---|---|---|
#18+
Привет! Собственно это не вопрос, а некоторые мои наработки по данному вопросу. Я не ставил задачи защиты программы с привязкой на железо, но с данным вопросом столкнулся. Итак. На этом форуме, на фоксклубе и в интернете Вы найдете следующие решения: 1) Получить "серийный номер" логического диска винчестера, т.е. раздела на HDD. Этот способ существует в разных реализациях, однако у всех одно общее - использование GetVolumeInformation из Win32API: Код: plaintext
- собственно "серийный номер" логического диска винчестера - это не hardware serial. Это некий случайный набор чисел, получаемый разделом в результате форматирования - не исключается повтор - есть куча программ, которые могут выставлять заданный "серийный номер" любому логическму диску - если производитель (сбощик) РС установит винду с помощью программ клонирования, очень большая вероятность того, что и "серийные номера" всех логических дисков так же будут клонированы - пользователю достаточно отформатировать раздел, к "серийному номеру" которого привязана прога, и в результате этот самый "номер" изменится. Не говоря уже о переразбивке диска и переустановке винды. Вывод: способ - ацтой! 2) Получить серийные номера различных устройств (компонентов) с помощью службы WMI. Выглядит примерно так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
- сама служба WMI у пользователя мб отключена или вообще недоступна - Win98 + WMI = недюженный гемор - если производитель (сбощик) РС установит винду с помощью программ клонирования, очень большая вероятность того, что и "серийные номера" для всех таких РС будут совпадать, даже если само железо другое. Просто клонируется реестр, откуда WMI черпает инфу - WMI может у одних нормально работать, а у других тупо не выдавать серийник, т.е. возвращать .NULL. - далеко не всякое железо всякого производителя вообще будет отдавать серийник, т.к. есть куча ньюансов именно по производителям. Скажем винты Seagate отдают серийники по одному способу, а WD имеют уже какие-то хитрости и т.д. Вывод: способ - ацтой! Неважно на что "привязываться", хоть и на BIOS. 3) Получить некий GUID, основанный на данных реестра. Типа следующего примера на VB (на фокс смысла переводить не имело): Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33.
- необходим доступ к реестру, хз что с правами - неизвестно от чего это все зависит вообще, меняется ли по жизни и почему - если производитель (сбощик) РС установит винду с помощью программ клонирования, очень большая вероятность того, что этот способ выдаст одно и тоже на физически разных РС, т.к. клонируется и реестр, откуда черпается инфа. Вывод: на мой взгляд, восновном из-за недостатка связанного с установкой винды клонированием, способ - ацтой! 4) Получить CPUID, т.е. идентификаионную иформацию процессора. Для реализации на фокспро не обойтись без сторонних программ, типа консольных ехе (например: getcpu.exe и различные одноименные cpuid.exe) или с помощью специальных библиотек fll/dll (можно найти на фоксклубе). Есть как бесплатные так и платные решения типа Hardware_IDExtractor и т.п. Все решения основаны на ассемблерной комманде CPUID. данный способ имеет следующие недостатки: - не каждое решение работает с правами юзера, т.е. некоторые только с правами администратора - нельзя использовать индентификатор, строящися на принципе получения контрольной суммы типа CRC32/MD5 и тп от полученной информации (ответа), т.к. это влючает в себя номер задействованного в данный момент ядра и текущую частоту. Текущая частота процессора зачастую "плавает" в пределах нескольких МГц в реальном времени (не говоря уже о разгоне или наоборот, котода биос сбрасывает настройки на безопасные в случае сбоя), а номер ядра, когда в ходу многоядерные системы, в разный момент времени на одном и том же РС мб разным (проверено). Итого: будет разная инфа и соотв. кс в разные моменты времени на одном и том же РС! - процессоры Intel, начиная с Pentium-III, действительно отдают сериник через CPUID, но на всех старших, современных моделях необходимо обязательно предварительно включать такую фичу в BIOS-е материнки, чего естественно никто не делает - не все процессоры вообще имеют возможность получать серийные номера программно, в т.ч. через CPUID. Например, процессоры AMD - не имеют вообще. Об этом можно прочитать в нете, втч на вики. - в итоге на типовой конфигурации в оффисе и т.п., когда несколько РС построены на одном и том же железе, CPUID отдаст одну и ту же инфу, т.е. неуникальную. - наличие дополнительных файлов (библиотек, программ) сторонних производителей, повсеместная работоспособность которых не гарантируется Вывод: способ - ацтой! 5) Получить реальный hardware HDD serial. Это опять же не решается средствами фокспро, а подобно предидущему варианту с помощью библиотек или программ сторонних производителей. Здесь восновном существуют практически исключительно только платные варианты, как то дллки Hardware_IDExtractor, RLByte HDDPhysic, AKRAM SOFT HardDiskSerial и т.п. и кряков к ним как правило просто не существует, т.к. спроса нет. Я находил лишь 2 бесплатных варианта - один в виде dll (AmoK GetIDE, который, однако, требует прав администратора, а у юзеров не работает вообще) и в виде консольной ехе - diskid32, которая таки работает с правами юзера. данный способ имеет слудющие недостатки: - наличие дополнительных файлов (библиотек, программ) сторонних производителей, повсеместная работоспособность которых не гарантируется - возможные проблемы с правами доступа в виндах - проблемы связанные с версией винды, т.е. может работать на XP, но не работать на Vista или 7 - подавляющее большинство удобных решений - платные - наличие доп. проги/дллки легко заметно, для взлома потребуется "эмуль", который будет выдавать одно и тоже везде Вывод: в принципе возможное решение, но непопулярное, а что до diskid32 - то и довольно легко взламываемое. Можно, конечно контрольную сумму запускаемого ехе спросить, но и это легко "подставить". Разве что переписать diskid32 (на оф. сайте выложены исходники) на фокспро, если такое вообще возможно. 6) Получать любые серийники любого железа позволяют различные программы типа старой AIDA32ю. К примеру Everest Corporate Edition имеет специальные функции, с помощью которых любую инфу о железе и не только можно получать даже удаленно, мониторить изменения в железе и все такое, может "сливать" отчеты в разном виде (CSV и тд) и даже заливать на SQL-сервер. Решение имеет лишь один очевидный недостаток - оно платное. И довольно дорогое. Т.к. даже не пробовал, больше ничего сказать не могу. Дома запускал, прога реально модная и весьма популярная в середе итешнегоф - инфу отдает любую, однако требует периодического обновления, связанного с появлением нового железа (чипсеты, процы, видяхи и тп). Вывод: возможное решение, но зависит от материальных возможностей. Глобальный вывод: защита программы, основывающаяся на серийниках железа сама по себе ущербна изначально. Весь софт, защищенный подобным образом - взламывается, защиты "обходятся". Единственной пока устойчивой защитой является онлайн-активация типа UbiSoft-овской DRM, т.е. когда для работы программы постоянно нужен выход в интернет, понятно для чего :) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2010, 15:46 |
|
Привязка к железу. WMI и другие способы.
|
|||
---|---|---|---|
#18+
Самый главный вопрос - вот нафига это надо ? Если всем известно, что лучшая защита - качественное сопровождение. А если надо сломать, то Defox ломается. Было бы что ломать ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2010, 22:24 |
|
Привязка к железу. WMI и другие способы.
|
|||
---|---|---|---|
#18+
Да незачем так мудрить, привязывайтесь к дате BIOS, извлекая её внешним 16-битным приложенеим (а иначе не сможете) . Все эти DECLARE тут вам не помощники. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2010, 15:55 |
|
Привязка к железу. WMI и другие способы.
|
|||
---|---|---|---|
#18+
Мне какбэ фсиравно кому и зачем это надо. Сие является лишь кратким обзором вариантов собранные в одной "статье" для тех, кто этим интересуется. Если есть что добавить - добавляйте, только подробнее. Потому как "дата из биоса" например мне мало о чем говорит, т.к. часы/календарь и так на "материнских" часах, т.е. какбэ из биоса, что там "вытаскивать"? Дату создания биоса? Дату прошивки биоса? Дату версии биоса? Опять же - какую б дату там не брать, необходима, как тут было сказано, внешняя прога, которая быстро "палится" простым просмотром содержимого каталога проги и пишется простецкий эмуль, выдающий всегда то, что "дохтур" (т.е. программёр) прописал . ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2010, 00:11 |
|
Привязка к железу. WMI и другие способы.
|
|||
---|---|---|---|
#18+
CTAC-KO,- Достаточно и первого метода.Нужно просто давать время на размышление потенциальному покупателю и не блокировать запуск программы ,а переводить ее в демо-режим.Поэтому в файл лицензии лучше спрятать ,кроме серийника винта, еще и название организации и дату окончания поддержки.Не сработает первое - будет часто напоминать второе. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2010, 17:04 |
|
Привязка к железу. WMI и другие способы.
|
|||
---|---|---|---|
#18+
psjCTAC-KO,- Достаточно и первого метода.Нужно просто давать время на размышление потенциальному покупателю и не блокировать запуск программы ,а переводить ее в демо-режим.Поэтому в файл лицензии лучше спрятать ,кроме серийника винта, еще и название организации и дату окончания поддержки.Не сработает первое - будет часто напоминать второе. Имеется в виду API ? Это несерьезно. Я не имел в виду ответ участников про изготовление "простейшего эмуля", это дело уже хакеров с закатанными рукавами, вы попробуйте взломать старинное 16-битное внешнее приложение, тем более зашифрованное и включенное в проект. Друзья, не надо тут пальцы веером. На данный момент лучшее средство защиты - DefoxIII. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2010, 17:19 |
|
Привязка к железу. WMI и другие способы.
|
|||
---|---|---|---|
#18+
CTAC-KO, я использовал WMI. Тупо запускал ShellExecute с такой программой (из командной строки не работает) msinfo32 /nfo info.nfo ВСЕЕЕЕ сведения, что необходимы.... даже не парься насчет всего остального. Правда парсер простенький нало написать. Решение внедрено мной на 3 предприятиях... не жалуются. Если какой-нить зверь спер память с компа... у меня тут же отчет выскакивает ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2010, 15:04 |
|
Привязка к железу. WMI и другие способы.
|
|||
---|---|---|---|
#18+
TelumCTAC-KO, я использовал WMI. Тупо запускал ShellExecute с такой программой (из командной строки не работает) msinfo32 /nfo info.nfo ВСЕЕЕЕ сведения, что необходимы.... даже не парься насчет всего остального. Правда парсер простенький нало написать. Решение внедрено мной на 3 предприятиях... не жалуются. Если какой-нить зверь спер память с компа... у меня тут же отчет выскакивает ))) Вам повезло. Дело в том, что WMI на компе может не быть или оно есть, но отключено. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2010, 18:09 |
|
Привязка к железу. WMI и другие способы.
|
|||
---|---|---|---|
#18+
rewareTelumCTAC-KO, я использовал WMI. Тупо запускал ShellExecute с такой программой (из командной строки не работает) msinfo32 /nfo info.nfo ВСЕЕЕЕ сведения, что необходимы.... даже не парься насчет всего остального. Правда парсер простенький нало написать. Решение внедрено мной на 3 предприятиях... не жалуются. Если какой-нить зверь спер память с компа... у меня тут же отчет выскакивает ))) Вам повезло. Дело в том, что WMI на компе может не быть или оно есть, но отключено. Почему повезло... я админ там ) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2010, 14:03 |
|
Привязка к железу. WMI и другие способы.
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2011, 10:10 |
|
Привязка к железу. WMI и другие способы.
|
|||
---|---|---|---|
#18+
StQFoxreware, ню-ню http://www.foxclub.ru/sol/solution595.php И что значит сие "ню-ню" ? Что полезного нам даёт приведенная ссылка ? Привязку проги к железу надо делать на низком нефоксовом уровне. Без внешнего 16-битного приложения здесь не обойтись. Только не надо сейчас про дампы памяти и эмуляторы, это уже для экстремалов. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2011, 13:57 |
|
Привязка к железу. WMI и другие способы.
|
|||
---|---|---|---|
#18+
reware, например, то что предложенный Вами вариант не панацея. Как видите, с софтиной проблемы тоже имеются. В остальном согласен с psj. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2011, 09:26 |
|
Привязка к железу. WMI и другие способы.
|
|||
---|---|---|---|
#18+
reware, С другой стороны, каждый сам для себя определяет уровень защиты продукта. Выбор защиты ПО прямо пропорционален масштабности написанной софтины :) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2011, 09:28 |
|
Привязка к железу. WMI и другие способы.
|
|||
---|---|---|---|
#18+
StQFoxreware, С другой стороны, каждый сам для себя определяет уровень защиты продукта. Выбор защиты ПО прямо пропорционален масштабности написанной софтины :) Ну, верно это. Можно ограничится программными средствами, можно электронный ключ где-то заказать. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2011, 22:38 |
|
|
start [/forum/topic.php?fid=41&fpage=79&tid=1584537]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
35ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
2ms |
others: | 31ms |
total: | 176ms |
0 / 0 |