Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Shareware protection

Автор: dotBY
Дата сообщения: 23.08.2003 21:41
Вот возник вопрос о продаже ПО, но людишки хитрые, им сделаешь под заказ , а они потом еще 5 клиентам толкнут . А я, видите ли, не Билли, и даже не 1С, так что позволить туда-сюда 100 USD я себе не могу. Суть вопроса: сабж в ВСВ или VC#...
Автор: redp
Дата сообщения: 24.08.2003 10:28
AsProtect поставь и не парься
разработка своего протектора с нуля - дело долгое и нудное (особенно если хороший протектор нужен), геморрой вылезает в самых неожиданных местах...
А прога на .NET в CLR bytecode - это ваще дохлый номер с точки зрения заshitы, даже хуже жабы
Автор: dotBY
Дата сообщения: 24.08.2003 11:01

Цитата:
AsProtect поставь и не парься

А что это такое и где его взять?
Автор: FuzzyLogic
Дата сообщения: 24.08.2003 16:16
http://www.aspack.com/
Автор: bob12345
Дата сообщения: 24.08.2003 21:34

Цитата:
http://www.aspack.com/

Так он же платный. Интересно бесплатное решение найти...
Автор: A_V
Дата сообщения: 24.08.2003 22:44
бесплатные решения в варезнике. и вобще аспротект конечно чтука мощная, но он уже не котируется, т.к слишком популярный, и статей по его распаковке море и автораспаковщик к последним версиям есть. лучше взять к примеру armadillo - штучка тоже прикольная , не слабее аспра и для него нет автоанпакеров к последним версиям. еще говорят XtremeProtector очень крут (www.xprotector.com) - появился сравнительно недавно и пока не одной статьи по ручному снятию не видно.

нащет .net - существуют всяческие obfuscator'ы (на wasm.ru вроде было че-то), не знаю правда насколько они сильно мешают взлому...

а вобще все это фигня единственный способ 100% помешать взлому - закриптовать часть кода. при условии, что криптоалгоритм нормальный и реализация правильная
Автор: dotBY
Дата сообщения: 25.08.2003 14:12
Так нет, там не то чтобы супер хакеры. Мне надо только чтоб не могли сделать cd-burn и передать в соседний офис. Для Делфы был такой компонент - tmxprotector. Он считывал инфу о железе и генерил ID, так что на другой машине не заводится с тем же ключом.
Автор: ShIvADeSt
Дата сообщения: 25.08.2003 23:36
dotBY Если они не супер хакеры, то попробуй сделать Инет регистрацию, то есть програ посылает на какой нибудь (твой) адрес байтик, оттуда приходит ответ, тогда она работает. А после этого даже если будет послан такой же байт с другой машины, то он уже не действителен. А ты в Инете сам прописываешь, какие действительны, а какие нет. Если не понятно пиши, объясню.
Автор: dotBY
Дата сообщения: 26.08.2003 00:47
ShIvADeSt ага, не совсем понятно как и зачем, а если нета вообще нету...
Автор: ShIvADeSt
Дата сообщения: 26.08.2003 03:26
dotBY Смысл был в том, что твоя прога не работает до тех пор, пока не получит каую нибудь ерунду с удаленного сервера, например при помощи сокетов, как трояны обмениваются инфой клиент с сервером, так же и здесь. Послал запрос на регистрацию в качесве параметра - какой нибудь код, а сервер смотрит у себя в базе разрешен он или нет если да, то прога где нибудь в реестре создает ключ уникальный для машины (н-р, привязка по биосу или номеру винта) и потом смотрит, если такой ключ есть, то она работает иначе нет. Как только какой нибудь код использовался все остальные запросы с ни посылаются на фиг. А так как инета нет, то могу только посоветовать следующее. Делаешь простейший keygen, у которого в качестве какого нибудь параметра выступает привязка (см выше). Запускаешь его на тачке клиента, он генереит код, его вводишь в прогу, которая также генерит свой, смотрит на получившиеся значения, если они совпадают, то работает - ключ в реестр. После установки ПО KeyGen на х... удаляешь. Надо еще одну копию приходишь на другой машине запускаешь или продаешь киген за бешенные бабки . Если еще что надо пиши. Может еще что придумаю.
Ну я и извращенец.
Автор: BBMike
Дата сообщения: 27.08.2003 08:12
я посмотрел armadillo. опций защиты много (главное чтоб совместимость не страдала)

что заинтересовала - в инете на нее есть только один номер, и тот блокированный, да распаковщик для самой древней версии.
не уж- то она и правда такая крутая?

P.S. это не тема "дайте номерок"
Автор: dotBY
Дата сообщения: 28.08.2003 16:35
ShIvADeSt ну так я так и хотел (про тмхпротектор я же писал, им под делфу пользовался, а клиентам по телефону выдавал кей, но один раз), суть вопроса в том, как зачитать инфу о железе в Билдере или в Шарпе
Автор: ShIvADeSt
Дата сообщения: 29.08.2003 00:09
dotBY вот адрес проги которая что то читает из биоса.
http://www.bendlins.de/nico/delphi/BiosHelp.zip
у меня на машине она читала биос релиз дату, но возможно может и более, так как там помимо юнита, еще и демка проги. Если что есть мыло автора, свяжешься с ним.
Автор: EAS
Дата сообщения: 29.08.2003 02:15
Ну, тут IMHO какую-либо регистрацию надо делать по-любому. Ибо если прога заболванена, я не вижу в своем мозгу никакого способа заставить ее узнать, что ее куда-то уже поставили. Есть правда разные технологии защиты сидюка от копирования (вплоть до полимерных покрытий болванки, мутнеющих после однократного чтения), но это имхо дорого, бесполезно и нафиг никому не нужно.
Если софтина на винте, то да, привязка к железу; чтение HDD-ID, MAC, Volume-Label etc. с последующей генерацией ключа на их основе. Конечно, против грамотного кракера это не поможет, даже у M$ не вышло. Аппаратные ключи не помогают...

Добавлено
Разнообразные шифровальшики кода, типа AsProtect, фишка исключительно против кракеров, чтобы было нельзя прогу дебаггером в лоб зарегить/расколоть. Все-равно если захотят - поломают 200%. Вопрос в том будет ли процесс краканья проги целесообразен по временным и экономическим параметрам
Автор: dotBY
Дата сообщения: 29.08.2003 15:29
Ну а если не прогой, а API

Добавлено
Ну и как мне узнать ХДД-ИД...
Автор: EAS
Дата сообщения: 31.08.2003 02:46

Цитата:
Ну а если не прогой, а API

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

А так, идея примерно такая: при запуске проги лезешь напр., в реестр и смотришь там свой ключик. Если его там нема, говоришь юзеру: "Хочу, гады ключик, иначе работать не буду". Получаешь его, проверяешь его валидность и дальше по обстановке.
Всякие шифровальщики как раз и служат для того, чтобы процедуру проверки ключа поглубже зарыть.

Можно еще так извратиться - кусок кода из проги выдираешь и на его место суешь массивчик нужного размера. При запуске софтины этот кусок в шифрованом виде из файла считываешь, дешифруешь его с помошью ключа (в частности) и назад суешь. Правда при таком раскладе, думается, надо по каким-нибудь уникальным системным параметрам генерить ID и уже в зависимости от него формировать key-файл. И в функции дешифрования системные параметры учитывать. Тыды она без нужного довеска работать просто не сможет. Шифровать чем-нибудь из степей OpenKey можно.

И т.д. и т.п.


Цитата:
Ну и как мне узнать ХДД-ИД

Это, думаю, надо DDK копать
Автор: ShIvADeSt
Дата сообщения: 01.09.2003 00:06
EAS причем здесь DDK. Надо обычное SDK читать. Вот АПИ функция

The GetVolumeInformation function returns information about a file system and volume whose root directory is specified.

BOOL GetVolumeInformation(

LPCTSTR lpRootPathName, // address of root directory of the file system
LPTSTR lpVolumeNameBuffer, // address of name of the volume
DWORD nVolumeNameSize, // length of lpVolumeNameBuffer
LPDWORD lpVolumeSerialNumber, // address of volume serial number
LPDWORD lpMaximumComponentLength, // address of system's maximum filename length
LPDWORD lpFileSystemFlags, // address of file system flags
LPTSTR lpFileSystemNameBuffer, // address of name of file system
DWORD nFileSystemNameSize // length of lpFileSystemNameBuffer
);
Автор: EAS
Дата сообщения: 01.09.2003 02:32
ShIvADeSt

Цитата:
GetVolumeInformation function returns information about a file system and volume

То-то и оно, что volume s/n, а не HDD s/n. Это то же, что, например, label выдает. Серийный номер раздела диска. Раздел переформатить, и уже другой получишь. А вот серийник винта где-то у него в контроллере прошит, и через SDK вряд-ли доступен.
Автор: ShIvADeSt
Дата сообщения: 01.09.2003 03:08
EAS ты меня извени, но если винт переформатировать, то прогу переустанавливать придется. То есть новый ключ придется делать. А этого помоему и хочет автор топика. Поэтому что s/n тома, что диска ИМХО ему подойдут для привязки. А вообще я бы делал привязку по SID или GID, они вообще уникальные. Хотя тут можно будет сделать образ винта и размножить. Но вот только кто позволит ставить ему на машину чужую операционку. . Я бы послал подадьше с таким предложением.
Автор: EAS
Дата сообщения: 01.09.2003 03:38
ShIvADeSt
Ну, ведь dotBY спрашивал

Цитата:
Ну и как мне узнать ХДД-ИД

я не настаиваю именно на привязке к конкретному винту. Как возможный вариант предлагал.

Цитата:
если винт переформатировать, то прогу переустанавливать придется. То есть новый ключ придется делать

Почему вдруг? Взять хотя бы схему активации WinXP. У M$ помнится, до смены пяти (или трех?) железок в компе все пашет.
Если привязыватся именно к аппаратной части, генерить ключик по ней, то пока железо не поменять все будет пучком. А если после каждой переустановки системы деньги за ключ сдирать то ... Имхо бред.
А так, прога посмотрела на железо, сгенерила некий ID, его вручили автору, он по нему сформировал ключик, взял за это копеечку, ключик пихают в программу, она его проверяет и

Правда при всех таких схемах требуется связь с разработчиком ПО, для получения ключа, но, по-моему сейчас без этого уже никуда. Все что можно регится через инет (или по старинке -- телеграф/телефон/почта).
Автор: UncoNNecteD
Дата сообщения: 01.09.2003 12:50

Цитата:
я бы делал привязку по SID или GID

Ты давай ближе к практике - функции гони
Автор: ShIvADeSt
Дата сообщения: 02.09.2003 00:31
UncoNNecteD
а вот и функции, их там много по Security. Но используя эту

Цитата:

The GetSecurityDescriptorGroup function retrieves the primary group information from a security descriptor.

BOOL GetSecurityDescriptorGroup(

PSECURITY_DESCRIPTOR pSecurityDescriptor, // address of security descriptor
PSID *pGroup, // address of pointer to group security identifier (SID)
LPBOOL lpbGroupDefaulted // address of flag for default
);


Parameters

pSecurityDescriptor

Points to a SECURITY_DESCRIPTOR structure whose primary group information the function retrieves.

pGroup

Points to a pointer to a SID structure identifying the primary group when the function returns. (A SID is a security identifier.) If the security descriptor does not contain a primary group, the function sets the pointer pointed to by pGroup to NULL and ignores the remaining output parameter, lpbGroupDefaulted. If the security descriptor contains a primary group, the function sets the pointer pointed to by pGroup to the address of the security descriptor's group SID structure and provides a valid value for the variable pointed to by lpbGroupDefaulted.

lpbGroupDefaulted

Points to a flag set to the value of the SE_GROUP_DEFAULTED flag in the SECURITY_DESCRIPTOR_CONTROL structure when the function returns. If the value stored in the variable pointed to by the pGroup parameter is NULL, no value is set.

и адльше по ссылкам можно получить то что надо. Хотя может я и ошибаюсь.
Автор: EAS
Дата сообщения: 02.09.2003 02:10
ИМХО

Цитата:
GetSecurityDescriptorGroup function retrieves the primary group information from a security descriptor

Почему-то у меня есть подозрения что SID/GID генерится примерно как GUID, и при перестановке системы будут сложности с повторым использованием оплаченного ранее ключа.
Автор: ShIvADeSt
Дата сообщения: 02.09.2003 07:50
EAS

Цитата:
Почему-то у меня есть подозрения что SID/GID генерится примерно как GUID, и при перестановке системы будут сложности с повторым использованием оплаченного ранее ключа.
тут ты полностью прав. Я только не могу понять в чем проблема. Парень хочет, чтобы его ПО не использовалось другими людьми. Если они переставляют Оси каждый день, то пусть постоянно связываются с разработчиком. Это конечно грубо, но в связи с недостаточным знанием асма я не могу предложить как получить данные о биосе.
. Меня просто попросили привести функции и вот вам результат... Я еще конечно подумаю, к чему еще привязываться (в смысле железа).
Автор: EAS
Дата сообщения: 03.09.2003 02:17

Цитата:
Если они переставляют Оси каждый день, то пусть постоянно связываются с разработчиком

Только вот у разработчика тоже дополнительная головная боль появляется -- поди заочно разбирайся, они ОСь переставили или софтину на другой комп поставили .

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

Не ты один .
Но если замахиваться на серьезные шаровары, видимо надо с этим делом разбираться, по крайней мере с идентификацией железа.
Автор: dotBY
Дата сообщения: 05.09.2003 16:33
кстати, эт тож трабл. бо софт, который я юзал, генерил кей по всему железу, а при смене джойстика (эт не прогон), ругался, что хард-блин-варе иди не соответствует. пиплы ругались и требовали новый кей. а потом просек фишку, что на 5 машинах стоит, а оплачено 3...
Автор: EAS
Дата сообщения: 06.09.2003 00:47

Цитата:
при смене джойстика (эт не прогон), ругался, что хард-блин-варе иди не соответствует

Ну и правильно, нефиг в офисе джойстику делать . А вообще, нужно думать к чему привязываться. Имхо, оптимально HDD и MB: если уж их поменяли можно и покричать, что комп другой . Или как-то допускать замену одной/двух железок.
Автор: dotBY
Дата сообщения: 08.09.2003 19:45

Цитата:
А вообще, нужно думать к чему привязываться. Имхо, оптимально HDD и MB

оптимально, или неоптимально - это все конечно хорошо, но вопрос КАК?
Автор: kishik
Дата сообщения: 08.09.2003 22:14

Цитата:
оптимально, или неоптимально - это все конечно хорошо, но вопрос КАК?

http://www.winsim.com/diskid32/diskid32.html - фриварная утилита с исходниками для получения информации о жестком диске. Для NT/2K/XP использует device i/o controls, для 9x/ME - vxd-шку, исходники которой также прилагаются. Но автор честно предупреждает, что с этой утилитой могут быть проблемы.

В MSDN есть также статья о том, как получить MAC-адрес ethernet адаптера (весьма распространенный способ привязки к компу). Называется "Getting the MAC Address for an Ethernet Adapter" (можно в google найти, если что). Есть люди, которые для получения MAC-адреса (или почти уникального числа, привязанного к компьютеру, если нет сетевой карты) советуют брать 6 последних байтов из GUID-ов, сгенерированных функциями UuidCreateSequential(Win2k/WinXP/2003 Server)/UuidCreate(для всех остальных).

К volume id через GetVolumeInformation привязываться тоже можно (хоть и ненадежно).

Удачи.
Автор: Pupsik
Дата сообщения: 09.09.2003 11:51

Цитата:
пиплы ругались и требовали новый кей. а потом просек фишку, что на 5 машинах стоит, а оплачено 3...

Ну и как вы будете определять, что они не ставят на другую машину, а меняют на этой?
Вот позвонили тебе и сказали: ой, у нас винт полетел, а сами ставят на другую.
И что?

Может там сидят не такие крутые крякеры и можно просто писнуть что-то в реестр?

PS: С мамы вообще серийник не выковырить. Т.е. выковырить можно, но это сильно зависит от фирмы, модели и прочего.
PPS: Интересно, зачем для чтения BIOS надо знать ассемблер?

Страницы: 12

Предыдущая тема: У кого есть Halcyon 6.9.4 Full для Delphi .... ????


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.