AshBone у тебя системные часты идут точно? вот и у меня тоже врут как на допросе. за эталон можно взять либо тактовый генератор ЦП, либо, что надежнее - службу атомного времени в нете. ну тут еще цесевича нужно почитать... одни часы стабильно отстают на секунду в сутки, другие же имеют более или менее хаотичное распределение. вот это распределение мы и берем за уникальную характеристику. единственные лыжи - термонестабильность приводит к тому, что погрешность меняется в зависимости от времени года... например, только что включенный компьютер, остывший за ночь, имеет одно распределение, а поработов несколько часов - другое. поэтому, необходимо выделить уникальный паттерн, а для этого необходима длительная серия замеров... но это я уже полез в тонкости... в жизни все не так уж и сложно
kaspersky Проводились ли исследования по этой теме? Т.е. реально ли получить достаточно стабильный "паттерн" с приемлемой степенью "уникальности"? При условии, что программа запускается на машине удаленного пользователя и не знает - давно ли включена машина, какая температура "за бортом" и в какой фазе сейчас Луна? Если есть результаты таких исследований, то хотелось бы знать - сколько времени уходит на получение характеристик...
AshBone когда я начинал это исследовать, то надеялся получить ключ. ключа не получил, но отличить один компьютер от другого - реально. времени на получение паттерна уходит много. по меньшей мере несколько часов, а желательно ~30 дней (ес-но не непрерываной работы). то есть извлечть паттерн за время триального периода - без проблем. к достоинствам этого метода можно отнести то, что он слишком неочевиден для хакера и потому будет трудно ломать, при условии, конечно, что в защите нет тупого кода if (pattern_isnt_ok()) exit();
maninthecode даже если они склонированы на секторном уровне и потом переписаны на другой винт, то при первом же запуске винда начнет искать драйвера для базовых устройств матери и ставить их, запишет в реестр параметры проца и др. устройств. проанализировав реестр, мы сможем сделать вывод - имело ли место клонирование или нет. правда, аналогичный результат даст перестановка винта на другой компьютер
а если это образ для виртуалки? и этот лбраз скачало с инета туева хуча людей как идентифицировать их кампеги?
виртуалка несет на своем борту довольно уникальное железо, это раз. виртуалка обычно так или иначе взаимодействует с "живым" железом и базовой осью - это два. если, допустим, есть локальная сеть (в VMWARE она по дефлоту есть), то сканим порты базовой системы. можем даже атаковать ее еслитам есть незаткнутые дыры кстати, идентификация по системным часам и прочим тактовым генераторам продолжит работать и под виртуалкой. в частности, можно определить частоту контроллера памяти, и уверенно отличить чипсет VIA/SiS от чипсета Intel. с прикладного режима, кстати. под VM Ware. под борщем это не прокатит, но борщ использовать... бррр.... но там тоже нычки есть
kaspersky Все же оптимально (учитывая требования большинства лицензий) пользовать параметры винта. Причина в том, что в большинстве случаев по лицензии возможен полный отказ программного обеспечения с пережачей его другому лицу, с последующим удалением. Т.е. если привязываться к чему либо другому (к часам к примеру), то банальная замена батарейки на новую приведет в необходимости перерегистрации программы. PS идентификацию по системным часам (с кривой распределения), уже видел в одной медицинской программе, сама идея родилась из тестовиков компа, которые проверяли точность хода этих часов и таймера компьютера - вот и я решил пользовать разность хода двух этих таймеров и все работало на ОК до замены батарейки контроллера памяти, и уверенно отличить чипсет VIA/SiS от чипсета Intel. Контроллер памяти пользовал раньше для реализации задержек, только вот столкнулся с ситуацией кода один тик под досом 1 мкс а под виндовсом 15 мкс, на современном железе - Core2Dou+965 т.о. полагаться на этот таймер нестоит. Другое дело таймар APCI, но и тут проблема - работает только на современном оборудовании (даже мой сарый пень 3 500 ACPI не поддерживал, а по мануалу должен был).
В описании проги можно добавить пункт "программа привязана к батарейке биоса, в случае смены батарейки обратитесь к разработчику за новой регистрацией" )
Как правило в 99% случаев нужен драйвер в случае внешнего контроллера, и как правило контроллеры не запрещают работу с отдельными устройствами напрямую через порты. Для того, чтобы прочитать паспорт устройства юзая IOCTL_SCSI_MINIPORT_IDENTIFY права админа ненужны. Но эта команда не всегда вернёт правильный результат, чаще ошибку. Есть свои трудности, физически прочитать дату биоса под 9х не составляет проблем, под NT без прав админа доступен только реестр. Но в реестре её легко можно подменить. Для физического чтения необходимы права админа для доступа к PhysicalMemory, который в свою очередь не всегда доступен даже с правами админа. В общем для надёжного определения эти 2 параметра не подходят, если использовать штатные средства для доступа к ним.
kaspersky А что если винда клонирована на аналогичное железо ? Представьте себе кантору, в которой партией закупаются аналогичные компы, или закупка их для компьютерного класса ? Смысла в ИД железа я не вижу, ибо для r3 кода эмулируется всё, кроме cpuid. Но и этот вопрос решаем без особых усилий.
k3internal > А что если винда клонирована на аналогичное железо ? не бывает такого в природе. у всех свои уникальные ID. > Смысла в ИД железа я не вижу я тоже не вижу. для честного юзера - гемор, нечестный все равно сломает (сам сломает или кинет запрос на крак - не суть важно). покажите мне привязку к железу, носителю, эл. ключу которую не отломали ну не долэна защита отравлять жизнь нормальным пользователям, а привязка ее отравляет ;( и прявязываться можно только к носителю, да и то с большой натяжкой.
k3internal так о чем речь?! если программа _запускается_, то взлом это всего лишь вопрос времени. как известно кракерской братии существует тысяча и один способ отравить взломщику жизнь и потому с экономической точки зрения взлом далеко не всегда оправдан.
kaspersky Да если программа _запускается_, то взлом это всего лишь вопрос времени. Только вот если для работы программы нужен и-нет, то не всетак гладко. К примеру если используется шифрование или тем более если оно ассиметричное
PROFi значит, не запускается крайний пример: терминальный клиент. в котором есть только интерфейс и код работы с сервером. ну, допустим, для ускорения работы клиент берет куски кода с сервера, кэширует их и выполняет локально. то есть в данном случае взлом все-таки возможен, хотя и запаришься писать вытягивать весь код (не будучи при этом уверенным, что он действительно весь), а потом еще писать эмулятор сервера... а если это чистый клиент, то ломать его вообще нечего ;(
kaspersky Да уж, в этом случае основа для "взлома" программ клиентов - удача, социальный инженеринг, + относительно слепой подбор. Но это уже психологом нужно быть, т.е. на ступеньку выше чем просто знание железок и системы. Я думаю и терминальный клиент "ломается" таким подходом. PS: спасибо за цикл статей в Хакере по "психологии". Где такое реализовано. Поделись ссылочкой, если не трудно.
PROFi > Где такое реализовано. Поделись ссылочкой, если не трудно. KAV on-line так и работает. и некоторые другие аверы. ставят avctiveX компонент, который при наличии свободного времени можно заставить работать в полном off-line, но... смысл? он же бесплатен... еще есть куча он-лайновых сервисов, которыми я баловался последнее время для перевода фоток в hdr (ссылок не помню, но они легко находятся гуглом), так вот обнаружил, что там тоже ставятся компоненты, осуществляющие часть вычислений локально. в принципе, там получается так: на стартовой странице куча опций и куча фич. в зависимости от того какие опции задействованы и какой входной/выходной формат мы юзаем, нам спускается определенный набор ActiveX-компонентов, в которых есть локальная проверка на предмет регистрации и если регистрации нет, то накладывается ватермакр поверх изображения, который можно и открутить. вот только... если ты задействуешь новые опции, то это будут новые ActiveX-компоненты.... в принципе, можно хакнуть и их... но ведь это же запаришься... и потом там хитро сделано. если базоый ActiveX видит, что он не справляется со своей работой (например, столкнулся с более сложным случаем совмещения изображний), то он автоматом догружает еще один ActiveX... и так в цикле... самое прикольное, что если файл небольшого размера и сервер не очень загружен, то он передается на сервер для обработки, в противном случае тебе дают ActiveX компоненты - типа, обрабатывай все сам на локальной машине
kaspersky Да копаться в ActiveX если он написан на языке высокого уровня дело неблагодарное... Кстати Крис, hdr - High dynamic range imaging. Я вот недавно совсем приобрел монитор NEC S-IPS матрица, пытался хоть глазком взглянуть на OLED матрицу (не дали). Вопрос в чем - для чего нужена эта технология если ее монитор не отображает? Да для выделения полутонов я пользуюсь плагином от фотошопа (группа Kodac плагинов) в целом доволен, но hdr для чего его пользовать если отобразить нельзя даже на CRT Где можно оценить разницу...