Вот возник вопрос о продаже ПО, но людишки хитрые, им сделаешь под заказ , а они потом еще 5 клиентам толкнут . А я, видите ли, не Билли, и даже не 1С, так что позволить туда-сюда 100 USD я себе не могу. Суть вопроса: сабж в ВСВ или VC#...
» Shareware protection
AsProtect поставь и не парься
разработка своего протектора с нуля - дело долгое и нудное (особенно если хороший протектор нужен), геморрой вылезает в самых неожиданных местах...
А прога на .NET в CLR bytecode - это ваще дохлый номер с точки зрения заshitы, даже хуже жабы
разработка своего протектора с нуля - дело долгое и нудное (особенно если хороший протектор нужен), геморрой вылезает в самых неожиданных местах...
А прога на .NET в CLR bytecode - это ваще дохлый номер с точки зрения заshitы, даже хуже жабы
Цитата:
AsProtect поставь и не парься
А что это такое и где его взять?
бесплатные решения в варезнике. и вобще аспротект конечно чтука мощная, но он уже не котируется, т.к слишком популярный, и статей по его распаковке море и автораспаковщик к последним версиям есть. лучше взять к примеру armadillo - штучка тоже прикольная , не слабее аспра и для него нет автоанпакеров к последним версиям. еще говорят XtremeProtector очень крут (www.xprotector.com) - появился сравнительно недавно и пока не одной статьи по ручному снятию не видно.
нащет .net - существуют всяческие obfuscator'ы (на wasm.ru вроде было че-то), не знаю правда насколько они сильно мешают взлому...
а вобще все это фигня единственный способ 100% помешать взлому - закриптовать часть кода. при условии, что криптоалгоритм нормальный и реализация правильная
нащет .net - существуют всяческие obfuscator'ы (на wasm.ru вроде было че-то), не знаю правда насколько они сильно мешают взлому...
а вобще все это фигня единственный способ 100% помешать взлому - закриптовать часть кода. при условии, что криптоалгоритм нормальный и реализация правильная
Так нет, там не то чтобы супер хакеры. Мне надо только чтоб не могли сделать cd-burn и передать в соседний офис. Для Делфы был такой компонент - tmxprotector. Он считывал инфу о железе и генерил ID, так что на другой машине не заводится с тем же ключом.
dotBY Если они не супер хакеры, то попробуй сделать Инет регистрацию, то есть програ посылает на какой нибудь (твой) адрес байтик, оттуда приходит ответ, тогда она работает. А после этого даже если будет послан такой же байт с другой машины, то он уже не действителен. А ты в Инете сам прописываешь, какие действительны, а какие нет. Если не понятно пиши, объясню.
ShIvADeSt ага, не совсем понятно как и зачем, а если нета вообще нету...
dotBY Смысл был в том, что твоя прога не работает до тех пор, пока не получит каую нибудь ерунду с удаленного сервера, например при помощи сокетов, как трояны обмениваются инфой клиент с сервером, так же и здесь. Послал запрос на регистрацию в качесве параметра - какой нибудь код, а сервер смотрит у себя в базе разрешен он или нет если да, то прога где нибудь в реестре создает ключ уникальный для машины (н-р, привязка по биосу или номеру винта) и потом смотрит, если такой ключ есть, то она работает иначе нет. Как только какой нибудь код использовался все остальные запросы с ни посылаются на фиг. А так как инета нет, то могу только посоветовать следующее. Делаешь простейший keygen, у которого в качестве какого нибудь параметра выступает привязка (см выше). Запускаешь его на тачке клиента, он генереит код, его вводишь в прогу, которая также генерит свой, смотрит на получившиеся значения, если они совпадают, то работает - ключ в реестр. После установки ПО KeyGen на х... удаляешь. Надо еще одну копию приходишь на другой машине запускаешь или продаешь киген за бешенные бабки . Если еще что надо пиши. Может еще что придумаю.
Ну я и извращенец.
Ну я и извращенец.
я посмотрел armadillo. опций защиты много (главное чтоб совместимость не страдала)
что заинтересовала - в инете на нее есть только один номер, и тот блокированный, да распаковщик для самой древней версии.
не уж- то она и правда такая крутая?
P.S. это не тема "дайте номерок"
что заинтересовала - в инете на нее есть только один номер, и тот блокированный, да распаковщик для самой древней версии.
не уж- то она и правда такая крутая?
P.S. это не тема "дайте номерок"
ShIvADeSt ну так я так и хотел (про тмхпротектор я же писал, им под делфу пользовался, а клиентам по телефону выдавал кей, но один раз), суть вопроса в том, как зачитать инфу о железе в Билдере или в Шарпе
dotBY вот адрес проги которая что то читает из биоса.
http://www.bendlins.de/nico/delphi/BiosHelp.zip
у меня на машине она читала биос релиз дату, но возможно может и более, так как там помимо юнита, еще и демка проги. Если что есть мыло автора, свяжешься с ним.
http://www.bendlins.de/nico/delphi/BiosHelp.zip
у меня на машине она читала биос релиз дату, но возможно может и более, так как там помимо юнита, еще и демка проги. Если что есть мыло автора, свяжешься с ним.
Ну, тут IMHO какую-либо регистрацию надо делать по-любому. Ибо если прога заболванена, я не вижу в своем мозгу никакого способа заставить ее узнать, что ее куда-то уже поставили. Есть правда разные технологии защиты сидюка от копирования (вплоть до полимерных покрытий болванки, мутнеющих после однократного чтения), но это имхо дорого, бесполезно и нафиг никому не нужно.
Если софтина на винте, то да, привязка к железу; чтение HDD-ID, MAC, Volume-Label etc. с последующей генерацией ключа на их основе. Конечно, против грамотного кракера это не поможет, даже у M$ не вышло. Аппаратные ключи не помогают...
Добавлено
Разнообразные шифровальшики кода, типа AsProtect, фишка исключительно против кракеров, чтобы было нельзя прогу дебаггером в лоб зарегить/расколоть. Все-равно если захотят - поломают 200%. Вопрос в том будет ли процесс краканья проги целесообразен по временным и экономическим параметрам
Если софтина на винте, то да, привязка к железу; чтение HDD-ID, MAC, Volume-Label etc. с последующей генерацией ключа на их основе. Конечно, против грамотного кракера это не поможет, даже у M$ не вышло. Аппаратные ключи не помогают...
Добавлено
Разнообразные шифровальшики кода, типа AsProtect, фишка исключительно против кракеров, чтобы было нельзя прогу дебаггером в лоб зарегить/расколоть. Все-равно если захотят - поломают 200%. Вопрос в том будет ли процесс краканья проги целесообразен по временным и экономическим параметрам
Ну а если не прогой, а API
Добавлено
Ну и как мне узнать ХДД-ИД...
Добавлено
Ну и как мне узнать ХДД-ИД...
Цитата:
Ну а если не прогой, а API
Если более ни менее толковую защиту делать, имхо дешевле будет что-то готовое взять, если конечно ты не спец. в области криптографии и защиты информации. Велосипед тоже долго изобретали .
А так, идея примерно такая: при запуске проги лезешь напр., в реестр и смотришь там свой ключик. Если его там нема, говоришь юзеру: "Хочу, гады ключик, иначе работать не буду". Получаешь его, проверяешь его валидность и дальше по обстановке.
Всякие шифровальщики как раз и служат для того, чтобы процедуру проверки ключа поглубже зарыть.
Можно еще так извратиться - кусок кода из проги выдираешь и на его место суешь массивчик нужного размера. При запуске софтины этот кусок в шифрованом виде из файла считываешь, дешифруешь его с помошью ключа (в частности) и назад суешь. Правда при таком раскладе, думается, надо по каким-нибудь уникальным системным параметрам генерить ID и уже в зависимости от него формировать key-файл. И в функции дешифрования системные параметры учитывать. Тыды она без нужного довеска работать просто не сможет. Шифровать чем-нибудь из степей OpenKey можно.
И т.д. и т.п.
Цитата:
Ну и как мне узнать ХДД-ИД
Это, думаю, надо DDK копать
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
);
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
);
ShIvADeSt
Цитата:
То-то и оно, что volume s/n, а не HDD s/n. Это то же, что, например, label выдает. Серийный номер раздела диска. Раздел переформатить, и уже другой получишь. А вот серийник винта где-то у него в контроллере прошит, и через SDK вряд-ли доступен.
Цитата:
GetVolumeInformation function returns information about a file system and volume
То-то и оно, что volume s/n, а не HDD s/n. Это то же, что, например, label выдает. Серийный номер раздела диска. Раздел переформатить, и уже другой получишь. А вот серийник винта где-то у него в контроллере прошит, и через SDK вряд-ли доступен.
EAS ты меня извени, но если винт переформатировать, то прогу переустанавливать придется. То есть новый ключ придется делать. А этого помоему и хочет автор топика. Поэтому что s/n тома, что диска ИМХО ему подойдут для привязки. А вообще я бы делал привязку по SID или GID, они вообще уникальные. Хотя тут можно будет сделать образ винта и размножить. Но вот только кто позволит ставить ему на машину чужую операционку. . Я бы послал подадьше с таким предложением.
ShIvADeSt
Ну, ведь dotBY спрашивал
Цитата:
я не настаиваю именно на привязке к конкретному винту. Как возможный вариант предлагал.
Цитата:
Почему вдруг? Взять хотя бы схему активации WinXP. У M$ помнится, до смены пяти (или трех?) железок в компе все пашет.
Если привязыватся именно к аппаратной части, генерить ключик по ней, то пока железо не поменять все будет пучком. А если после каждой переустановки системы деньги за ключ сдирать то ... Имхо бред.
А так, прога посмотрела на железо, сгенерила некий ID, его вручили автору, он по нему сформировал ключик, взял за это копеечку, ключик пихают в программу, она его проверяет и
Правда при всех таких схемах требуется связь с разработчиком ПО, для получения ключа, но, по-моему сейчас без этого уже никуда. Все что можно регится через инет (или по старинке -- телеграф/телефон/почта).
Ну, ведь dotBY спрашивал
Цитата:
Ну и как мне узнать ХДД-ИД
я не настаиваю именно на привязке к конкретному винту. Как возможный вариант предлагал.
Цитата:
если винт переформатировать, то прогу переустанавливать придется. То есть новый ключ придется делать
Почему вдруг? Взять хотя бы схему активации WinXP. У M$ помнится, до смены пяти (или трех?) железок в компе все пашет.
Если привязыватся именно к аппаратной части, генерить ключик по ней, то пока железо не поменять все будет пучком. А если после каждой переустановки системы деньги за ключ сдирать то ... Имхо бред.
А так, прога посмотрела на железо, сгенерила некий ID, его вручили автору, он по нему сформировал ключик, взял за это копеечку, ключик пихают в программу, она его проверяет и
Правда при всех таких схемах требуется связь с разработчиком ПО, для получения ключа, но, по-моему сейчас без этого уже никуда. Все что можно регится через инет (или по старинке -- телеграф/телефон/почта).
Цитата:
я бы делал привязку по SID или GID
Ты давай ближе к практике - функции гони
UncoNNecteD
а вот и функции, их там много по Security. Но используя эту
Цитата:
и адльше по ссылкам можно получить то что надо. Хотя может я и ошибаюсь.
а вот и функции, их там много по 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.
и адльше по ссылкам можно получить то что надо. Хотя может я и ошибаюсь.
ИМХО
Цитата:
Почему-то у меня есть подозрения что SID/GID генерится примерно как GUID, и при перестановке системы будут сложности с повторым использованием оплаченного ранее ключа.
Цитата:
GetSecurityDescriptorGroup function retrieves the primary group information from a security descriptor
Почему-то у меня есть подозрения что SID/GID генерится примерно как GUID, и при перестановке системы будут сложности с повторым использованием оплаченного ранее ключа.
EAS
Цитата:
. Меня просто попросили привести функции и вот вам результат... Я еще конечно подумаю, к чему еще привязываться (в смысле железа).
Цитата:
Почему-то у меня есть подозрения что SID/GID генерится примерно как GUID, и при перестановке системы будут сложности с повторым использованием оплаченного ранее ключа.тут ты полностью прав. Я только не могу понять в чем проблема. Парень хочет, чтобы его ПО не использовалось другими людьми. Если они переставляют Оси каждый день, то пусть постоянно связываются с разработчиком. Это конечно грубо, но в связи с недостаточным знанием асма я не могу предложить как получить данные о биосе.
. Меня просто попросили привести функции и вот вам результат... Я еще конечно подумаю, к чему еще привязываться (в смысле железа).
Цитата:
Если они переставляют Оси каждый день, то пусть постоянно связываются с разработчиком
Только вот у разработчика тоже дополнительная головная боль появляется -- поди заочно разбирайся, они ОСь переставили или софтину на другой комп поставили .
Цитата:
в связи с недостаточным знанием асма я не могу предложить как получить данные о биосе
Не ты один .
Но если замахиваться на серьезные шаровары, видимо надо с этим делом разбираться, по крайней мере с идентификацией железа.
кстати, эт тож трабл. бо софт, который я юзал, генерил кей по всему железу, а при смене джойстика (эт не прогон), ругался, что хард-блин-варе иди не соответствует. пиплы ругались и требовали новый кей. а потом просек фишку, что на 5 машинах стоит, а оплачено 3...
Цитата:
при смене джойстика (эт не прогон), ругался, что хард-блин-варе иди не соответствует
Ну и правильно, нефиг в офисе джойстику делать . А вообще, нужно думать к чему привязываться. Имхо, оптимально HDD и MB: если уж их поменяли можно и покричать, что комп другой . Или как-то допускать замену одной/двух железок.
Цитата:
А вообще, нужно думать к чему привязываться. Имхо, оптимально HDD и MB
оптимально, или неоптимально - это все конечно хорошо, но вопрос КАК?
Цитата:
оптимально, или неоптимально - это все конечно хорошо, но вопрос КАК?
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 привязываться тоже можно (хоть и ненадежно).
Удачи.
Цитата:
пиплы ругались и требовали новый кей. а потом просек фишку, что на 5 машинах стоит, а оплачено 3...
Ну и как вы будете определять, что они не ставят на другую машину, а меняют на этой?
Вот позвонили тебе и сказали: ой, у нас винт полетел, а сами ставят на другую.
И что?
Может там сидят не такие крутые крякеры и можно просто писнуть что-то в реестр?
PS: С мамы вообще серийник не выковырить. Т.е. выковырить можно, но это сильно зависит от фирмы, модели и прочего.
PPS: Интересно, зачем для чтения BIOS надо знать ассемблер?
Предыдущая тема: У кого есть Halcyon 6.9.4 Full для Delphi .... ????
Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.