Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2002.11.07;
Скачать: [xml.tar.bz2];

Вниз

Привязка программы к компьютеру   Найти похожие ветки 

 
Друпи   (2002-09-03 23:18) [0]

Ув. Мастера!!!
Мне надо мою програмку привязать к моему компу.
Причем так (по возможности), чтобы ее можно было привязать (лично мне) к другому компьютеру (или к примеру к моему же, после апгрейда ОС или железа).


 
DC-AC   (2002-09-04 07:21) [1]

Аппаратные ключи (COM, LPT, USB).


 
TCrash   (2002-09-04 10:42) [2]

Еще на 286х я делад прогу на паскале, которая запрашивала пароль при переносе на другую тачку. Привязывалась к серийному номеру материнской платы. Если не ошибаюсь - 8 байт (уже не помню). При вводе корректного пароля правилась константа в .exe (прямо в программе), которая и содержала серийный номер. На современных материнках есть ли такое - не знаю. Мож кто подскажет, как добраться до номера. Тогда добирался через реек(адрес).


 
DC-AC   (2002-09-04 11:24) [3]

"Серийный номер материнской платы" - стесняюсь спросить ЭТО ЧТО ?


 
Друпи   (2002-09-04 20:34) [4]

Может как-нибудь програмvно узнавать серийный номер винта и привязываться к нему. Но как его узнать?


 
DC-AC   (2002-09-05 07:05) [5]

Узнать-то можно, а как же это "после апгрейда ОС или железа" ? Винт - не железо что ли ? Он самый настоящий HARD disk :-)
И потом, сменить серийный номер винта - лично мне очень легко. Хоть 00000000 запишу. Не знаю как вам.


 
Друпи   (2002-09-05 08:40) [6]

2DC-AC
Как это "сменить серийный" - он типа на заводе должен присваиваться железно.


 
DC-AC   (2002-09-05 09:02) [7]

"присваиваться железно" - это как ? Он в EEPROM (или служебку, сейчас уже не помню) прописывается. А что один прописал, другой завсегда сменить может :-) Не верите - приходите, покажу ;-)


 
Anatoly Podgoretsky   (2002-09-05 09:14) [8]

Достаточно инсталляции и серийного номера для пользователя с привязкой привязкой к серийному номеру тома и тогда он сможет переинсталлировать при необходимости или из за любых причин.

Но если ты не доверяешь пользователю, то ты должен сам инсталлировать программу на его компьютере, устанавливая при необходимости дополнительное оборудование.


 
Роман Василенко   (2002-09-05 09:42) [10]


procedure gethd(path:string; out sn1,sn2:word);
var
snb,vnb:pchar;
fsf,mcl:cardinal;
drv:string;
sn:array[0..1] of word;
begin
vnb:=stralloc(250);
snb:=stralloc(250);
drv:=includetrailingbackslash(extractfiledrive(path));
if getvolumeinformation(pchar(drv),vnb,250,@sn,mcl,fsf,snb,250) then begin
sn1:=sn[0];
sn2:=sn[1];
end else begin
sn1:=-1;
sn2:=-1;
end;
strdispose(vnb);
strdispose(snb);
end;


В качестве параметра path можешь задавать что угодно: от "c:\" до... ну не знаю, что в голову придет.
Если процедурка возвращает -1 - значит ты где-то ошибся.

Самый здравый вариант - привязываться именно к номеру винчестера. Представь себе, невинный юзер совершил апгрейд мамы (ну, или саунд поменял) а твоё нетленное на него бочку пушит...


 
Роман Василенко   (2002-09-05 09:44) [11]

Забыл написать - sn1 и sn2 - оттуда надо получать серийный номер девайса, заданного в path


 
TCrash   (2002-09-05 09:47) [12]

2DC-AC
на 286х по какому-то адресу памяти(адрес не помню) содержалась 8ми байтовая константа (записать по этому адресу ничего не удавалось), уникальная для каждого компа. Проверялось на машинах абсолютно одинаковой конфигурации. Машин было ~10. Есть ли чего подобное в современных тачках - не уверен.


 
Anatoly Podgoretsky   (2002-09-05 09:54) [13]

Не придумывай, если только у тебя не был бренднейм от dell, compaq, HP


 
Gibbel   (2002-09-05 10:03) [14]

Посмотрите здесь:
http://support.microsoft.com/default.aspx?scid=KB;EN-US;Q208048&

2 DC-AC: Покажи мне хоть одного _ПОЛЬЗОВАТЕЛЯ_, который будет менять прошивку ПЗУ харда ;-)


 
DC-AC   (2002-09-05 10:29) [15]

Да, Вы правы. ПОКА менять её (а точнее некоторую служебную информацию) могут немногие. Надо будет восполнить данный пробел :-) Ы ?


 
Gibbel   (2002-09-05 11:02) [16]

Лучше не нада... Подумай о бедных сисадминах)))


 
Vladislav   (2002-09-05 11:03) [17]

getvolumeinformation вернет не серийный номер диска, а номер, который задается системой при форматировании диска. Переформать - и номер будет другой.


 
Vladislav   (2002-09-05 11:08) [18]

Еще уточнение getvolumeinformation номер не диска, а тома, т.е. для C:, D: номер будет разный.


 
Anatoly Podgoretsky   (2002-09-05 11:34) [19]

А какая разница, нормальную программу также придется переинсталлировать после смены диска, переформатирования, а плюч состоит в том, что это гарантировано работает, без дополнительных драйверов/модулей не в пример серийному номеру жесткого диска.


 
Gibbel   (2002-09-05 11:51) [20]

2 Anatoly Podgoretsky - выб по ссылочке сходили... Это я о "
> гарантировано работает, без дополнительных драйверов/модулей
> не в пример серийному номеру жесткого диска.
"


 
raiv   (2002-09-05 11:55) [21]

Не ломай голову! Профи всеравно крякнет твою защиту, а для чайника скачай компонент AVLGold c этого форума.

http://www.delphipages.com/edit/count.cfm?ID=3190&E=1342

И пользуйся на здоровье!


 
Anatoly Podgoretsky   (2002-09-05 11:59) [22]

Сходил и с удовольствием прочитал, хорошая статья и к тому же не умалчивает о проблемах "SMARTVSD Troubleshooting Checklist"


 
ruslanyd   (2002-09-05 12:59) [23]

сам заинтересован в способах привязки софта к железу (винту или маме), но хотелось бы узнать все-таки более эффективные способы,
чем getvolumeinformation.
Серийник тома, который она возвращает, подменяется diskedit-ом за 30 сек. на любой интересующий

можно и более доступным способом
ghost сделает сколько угодно клонов этого винта, на которых ваш софт будет работать ничего не заметив - плакали ваши денежки ;)

2 TCrash
>на 286х по какому-то адресу памяти(адрес не помню)
>содержалась 8ми байтовая константа (записать по этому
>адресу ничего не удавалось)
этот серийник был прописан в самом конце адресного пространства Conventional памяти, и находился в ПЗУ биоса, но под NT/2000
прямого доступа физ. памяти нет :(


 
Anatoly Podgoretsky   (2002-09-05 13:06) [24]

raiv © (05.09.02 11:55)
ruslanyd (05.09.02 12:59)
Мы не о креках говорим



 
Gibbel   (2002-09-05 13:19) [25]

2 ravi: Профи сломает любую защиту. Вопрос в том, чтобы заставить его что-либо ломать, и чтоб этот процесс занял как можно больше времени и сил.


 
ruslanyd   (2002-09-05 13:38) [26]

Именно!
я же сказал, что сам заинтересован в способах привязки софта к железу, а для того, чтобы ее сделать надежной в какой-то степени, надо знать хотя бы простые способы ее обхода

2 Gibbel
а при чем здесь технология SMART ?


 
Gibbel   (2002-09-05 14:18) [27]

2 ruslanyd с помощью этой технологии мы можем получить информацию _УНИКАЛЬНУЮ_ для данного устройства, в частности дисков IDE


 
DC-AC   (2002-09-05 14:25) [28]

Сегодня я поставил программу на свой винт, она благополучно к нему "привязалась". Завтра я меняю винт и пишу разработчику "типа у меня винт кирдык, Fujitsu MPG и всё такое", шли опять по новой. Послезавтра повторяется та же история. ПРЕДПОЛОЖИТЕ дальнейшие действия разработчика и меня...


 
ruslanyd   (2002-09-05 14:27) [29]

технология SMART изначально использовалась только на винтах WD
и то с определенного времени
позже они лицензировали ее другим производителям (но далеко не всем), т.е. привязка, выполненная таким образом, будет не универсальная


 
Gibbel   (2002-09-05 14:51) [30]

2 DC-AC: По-моемому речь шла о привязке программы к компу, т.е. к ее "железу"... Железо имеет свойство накрываться. Вопрос в том, что привязывать можно не только к харду, но и к остальному оборудованию, и, если какое-либо оборудование меняется, подстраиваться под новую систему. То есть, можно отслеживать, скажем, мамку, тип проца (инфу, полученную с помощью команды CPUID), тип и серийный номер харда(ов), сидюка(ов), и т.д... И, если изменения в системе незначительные, самостоятельно подстраиваться под новую систему.
А насчет методов с ключами, то тут куча проблем - например, нету у меня свободных портов... И попробуй тут что-либо возразить... В результате, можно только снизить популярность своего проекта.
2 ruslanyd: не думаю, что сейчас кто-либо пишет программы под винды, расчитывая на то, что им придеться работать на компах старше 10 лет.


 
DC-AC   (2002-09-05 15:30) [31]

Мда... Всё в лучшем духе Microsoft и его XP. Им можно, а мы значит ничем не хуже. Печально всё это.
Я работаю в компьютерном сервисе, доводилось ездить на выезды к клиентам, ну не доводилось мне за 4 года встречать компа, на котором оба COM, один LPT и (как минимум) два USB были заняты.
Сорри если развожу флейм, для меня тема исчерпана, пошёл работать.


 
ruslanyd   (2002-09-05 17:31) [32]

2 Gibbel
почему 10 лет?
на винтах производства, отличного от WD, где-то 2-х годовалой давности SMART мало где присутствовал
и таких компьютеров сейчас в эксплуатации масса

2 DC-AC
если у клиента летят каждый день винты, то это проблема клиента или производителя этих винтов, а электронные ключи - это неоправданные дополнительные затраты для того же клиента,
т.к. и этот способ защиты тоже не панацея


 
ruslanyd   (2002-09-05 17:45) [33]

неужели на сегодня нет способа программным путем прочитать серийный номер производителя винта или матери?



 
vasya_dvc   (2002-09-05 22:12) [34]

Можешь к серийнику процессора привязаться ... Если человек поменял проц - то прога лечится простой переустановкой, о чём она сама может ему с радостью об этом сообщить (любезно выдвинув лоток CD). К тому-же ... не так часто юзер процессоры меняет! Насчёт матери - не знаю.
Тут возникает проблема защиты дистрибутива. Есть один из путей ... Человек шлёт заяву на покупку твоей проги. Ты ему кидаешь программу, считывающую серийник проца и создающую каким-либо образом ключ. Всё ему честно объясняешь: "запусти эту прогу там, где ты её хочешь ставить. А полученый ключик шли мне обратно" . Дальше надеюсь понятно ... Путей обхода кроме прямого disasm я не вижу, а желающих этим заниматься не так уж и много (учитывая современное законодательство, за это можно небо клетчатое увидеть).

Насчёт серийника винта - а он там точно есть? Я говорю не про серийный номер, генерируемый при его (HDD) форматировании, а про такой, что невозможно изменить. Я за своё короткое время пребывания перед монитором не встретил ни одной проги, которая его бы получала ...


 
Друпи   (2002-09-05 23:13) [35]

Только что родилась тупейшая идея:
привязываться к первому попавшемуся BAD-BLOCKу винта и если он "исправился", то не грузиться.


 
DC-AC   (2002-09-06 07:05) [36]

ruslanyd
>если у клиента летят каждый день винты, то это проблема клиента или производителя этих винтов

Но Вы же, предположим, ПРОДАЛИ человеку программу ? И КИНЕТЕ его при первом же "помирании" винта ? Видимо Вам неизвестна проблема винтов Fujitsu MPG :-)

vasya_dvc
>Можешь к серийнику процессора привязаться

А это ещё что такое ? То, что написано на нём на бумажной наклеечке ? :-)

>Я за своё короткое время пребывания перед монитором не встретил ни одной проги, которая его бы получала ...

Эта тема уже неоднократно здесь перетиралась, по-моему примеры получения s/n винта чуть ли не на каждом углу висят бооольшими буквами.


 
msts   (2002-09-06 11:05) [37]

Если сможешь решить эту задачу (привязка программы к "рабочему месту") смело проси за это 10 000 000$ как ни как сотни фирм и десятки корпораций тратят на решение этой проблемы миллионы баксов и кстати абсолютный результат = 0 иначе ты бы не сидел на XP Professional и точно не юзал Delphi :(
но конечно есть относительный результат состовляющий 17% от абсолютного, но это так отступление (которое ты и так знаешь)
в общем возьми ручку и лист бумаги (так делают все матера :))- раздели его по полам линией с одной стороны опиши типовую конфигурацию "рабочего места" - установленного на него програмного и аппаратного обеспечения (если прога стоящая то и особенные требования найдутся) на другой половине опиши какие изменения (и какова их степень) приводит к тому что теперь это _другое_ рабочее место и есть основание заявить о необходимости переустановки проги в общем решил для себя - что
значит "запустили прогу на другом компе"
(в качестве источника я бы использовал глобальную таблицу атомов, если установленна винда)
далее определился бы с форматом хранения этой информации и способа интеграции в код программы для наибольшей зависимости (придется написать свой линковщик)(можно использовать java П-код и генерить на нем часть проги - выполнять в другом потоке исползуя какую нибудь JVM)
далее я бы применил нейронные сети (в частности распознования образов) для анализа этого описания - что позволяет сделать более мягкую проверку на изменения конфигурации, с каждым запуском нужно сохранять результат анализа то есть новую конфигурацию (получится как бы фотография компа с шумом - а твоя прога будет распозновать в ней тот комп на который ее поставили и если не узнает то заявить о переустановки, но комп стареет/изменяется но если эти изменения затронули 50 из 1000 атрибутов то это нормально иначе... ) при этом должно быть накопление (в разумных пределах) результатов анализа и переодической смены эталона с которым сравнивать - комп стареет а прога его узнает (как человек постоянно видящий другого не замечает изменений а стоит возникнуть перерыву - то уже нужно узнавать)
что дают нейронные сети (НС) - сложность трассировки (прямо скажем нихрена непонятно) интеграция в нее своего кода (полезного так сказать) достаточно проста в связи с компонентной архетиктурой делфы, так же можно сделать зависимость от степени узнования - степень ограничений на функциональность проги,
так как в НС нет прямых переходов - если иначе - то банальная замена инструкций не поможет крякеру, снимок проги из памяти тоже, знание НС "не дает нихрена" (Цой) , в общем полиморфная прога на критериях зависящих от конфигурации компа.
осталось защитить генератор НС - для этого система будет состоять из 3х частей
1 - программа установки - ПУ
2 - сама программа - П
3 - генератор НС - ГНС
клиенту высылается ПУ и П - она формирует предварительное описание (ПО) раб места - передает разработчику - на основе этого ПО - генератор формирует НС и высылает назад - ПУ вшивает НС в П (ну вариации на твое усмотрение), таким образом разработчику нужно защищать только ГНС
если НС имеет 1000 узлов/нейронов помноженных на 10 связей-синапсов и того 10 000 конструкций - если/иначе - крякеру будет грусно
а теперь представь на сколько должна быть стоящей твоя прога?
а с другой стороны можно потратить 5 месяцев - наваять ~ 35 000 строк кода в скомпиленном виде ~15кб - сделать компонент для дельфы и продать за выше указанную сумму какой нибудь корпорации



Страницы: 1 вся ветка

Форум: "Система";
Текущий архив: 2002.11.07;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.57 MB
Время: 0.009 c
14-21786
Rouse_
2002-10-17 21:26
2002.11.07
ВСТРЕЧА В МОСКВЕ


1-21634
kofman
2002-10-26 21:29
2002.11.07
Как открыть для чтения самого себя?


14-21811
bigcrush
2002-10-19 11:25
2002.11.07
Часто падает w2k


1-21679
RTZ
2002-10-28 10:31
2002.11.07
Народ возникли два вопроса по компоненту WebBrowser


14-21800
MaximatorVeter
2002-10-19 18:40
2002.11.07
Как поживаешь? Как дела? Как твое ничево?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский