Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C++ Builder > Как защитить программу с помощью ключа |
Автор: Zakhar_Shan 4.4.2009, 21:11 |
Добрые люди, искал по форуму, но без особого конкретного результата. Нужно написать модуль генерирования лицензионного ключа. Как я хочу это сделать: Ключ должен генерится исходя из каких либо постоянных данных, которые на разных машинах – разные (например id компа, который как достать я тоже пока не знаю ![]() Зачем мне это нужно (кому не интересно может не читать): Преподу написал программу для решения транспортной задачи на сети (Математика, Логистика…), а она хочет, чтоб эту прогу студенты только использовали для проверки задач в аудитории, и не брали домой, отсюда и решил: 1. Прога при первом запуске будет запрашивать ключ, выдавая id компа. 2. Препод берёт id компа, и вводит его в программу-генератор (который будет только у него). 3. Генератор генерит ключик 4. Препод вводит ключик в прогу, прога записывает ключик в реестр, и при каждом запуске сравнивает его генерируя ключик от id компа у себя. И всё в ажуре!!! ![]() ![]() Сильно мудрёно тоже не надо, так как студенты у нас далеко не гении во взломе. Помогите ПЛИЗЗЗЗЗ!!! ![]() |
Автор: Zakhar_Shan 4.4.2009, 21:28 | ||||
Ну не такие же тупые ![]() |
Автор: Anikmar 4.4.2009, 21:33 |
Думаете они будут дизассемблировать и смотреть как устроена зашита? Ключ можно спрятать так, что не зная где он - не найдешь. |
Автор: Zakhar_Shan 4.4.2009, 21:43 | ||
... не знаю, я бы на месте студента первым делом иска запись в реестре ну например: jv16 PowerTools'ом, но большое спасибо за вариант ![]() |
Автор: Anikmar 4.4.2009, 21:55 |
Вопрос вот только какую? |
Автор: Zakhar_Shan 4.4.2009, 22:05 |
Был у мя случай, когда программер один, написал прогу, а разрешал только пользоваться избранным, так я эту прогу к себе скопировал, и каспера на неё нацелил (помоему был 6й), сказал касперу чтоб следил за ней, а он мне при её запуске выдал сообщение об обращение по пути... далее дело за малым, посмотреть на компе где программа запускается сто в этом пути... Anikmar, спасибо большое за вариант, если больше ничего дельного не покажут, чтож ![]() |
Автор: vikaz 4.4.2009, 22:17 |
Придумать можно все что угодно. Anikmar прав, не обязательно же обзывать ключ в реестре как называется твоя программа. Придумай какое нибудь заумное имя и никто никогда не найдет, если им сильно этого не захочется. Вот только если у них окажется один такой ключ, который разблокирует твою защиту, то они надут его в реестре легко. Да и если она им очень сильно понадобятся, а они не знают, как её взломать, то я думаю что у кого нибудь найдется знакомый, который это умеет и поменяв несколько бит в исполняемом модуле, они получат полную и работоспособную программу. Может тебе лучше встроить в свою программу TCP клиент? На машине преподавателя поставить серверную часть. Как только клиент запускается, он связывается с сервером, получает разрешение на визуализацию формы и работает дальше, если нет, то программа закрывается. Тебе писать ничего сложного не нужно, при помощи Indy все это можно написать за несколько часов. Но это все так же можно обойти, если залезть в exe файл. Еще метод - аппаратный ключ защиты. Вот к примеру ссылка на один такой: http://senselock.ru/ Но как мне кажется не для твоего варианта, а то студенты стырят его и все..... ![]() |
Автор: Zakhar_Shan 4.4.2009, 22:28 | ||
Дело в том, что я сужу по себе. Тот метод который предлагает Anikmar, я бы взломал без особых проблем (конечно если бы знал что прога так защищена, что прибовляет плюсов этому методу) С TCP ну вообще не практиковался, но это не проблема, дело в том, что сетка у нас в универе уж сильно хреновая, и помоему даже комп препода толком вней и не стоит. Возится с Битами в исполняемом модуле... Теоритически понимаю, но практичски... вот это ооочень сложно. Добавлено через 4 минуты и 47 секунд Вот что то нашёл, вроде оно, но толком не разберу, да и C# не очень знаю, может кто поможет перевести если это оно:
|
Автор: mes 4.4.2009, 22:41 |
зашифруйте свой ключ относительно ключа винды. см. [HKey_Local_Machine/Software/Microsoft/WindowsNT/CurrentVersion] в частности [HKey_Local_Machine/Software/Microsoft/WindowsNT/CurrentVersion/WPAEvents] |
Автор: Zakhar_Shan 4.4.2009, 22:47 |
Неплохо mes, спасибо, идея good ![]() Но вопрос не относительно чего фиксировать, а как получить из этого что то типа: 4876-8DB5-EE85-69D3-FE52-8CF7-395D-2EA9 |
Автор: mes 5.4.2009, 00:36 | ||
если я правильно понял Ваш вопрос : возьмите строку в 16 символов, зашифруйте ее относительно ключа, и представьте каждый код символа в 16ричном виде - в итогe 32 цифры, или 8 пар по 4 цифры. |
Автор: Zakhar_Shan 5.4.2009, 11:23 | ||
Так вот как её шифрануть????? |
Автор: mes 5.4.2009, 13:10 |
самый простой способ проXORить .. при повторении операции происходит дешифровка. |
Автор: Zakhar_Shan 5.4.2009, 13:19 | ||
... ага, во как... ладно сэнкс mes, будем XORить.... ещё бы знать как э то... |
Автор: mes 5.4.2009, 14:34 | ||
вот набросок :
разбирайтесь и приспосабливайте ![]() |
Автор: Zakhar_Shan 5.4.2009, 16:01 |
Ух, супер!!!!! ![]() mes, спасибо большое, всё понятно, как будет 100 постов, + к репутации от меня!!!! ![]() |
Автор: A5uKa 5.4.2009, 16:20 |
можешь потом выложить что получилось ? |
Автор: Zakhar_Shan 5.4.2009, 16:37 |
через часика 2-3 выложу код адаптированный для C++ Builder 2009 |
Автор: Anikmar 5.4.2009, 17:02 | ||
Чего ждать - можно и сейчас, для mes не жалко ![]() |
Автор: Zakhar_Shan 5.4.2009, 17:41 | ||
У меня пишет:
|
Автор: Anikmar 5.4.2009, 17:51 |
Это в смысле того, что я за вас + поставил ![]() |
Автор: Zakhar_Shan 5.4.2009, 19:09 |
Ау, понял ![]() |
Автор: artsb 5.4.2009, 20:05 |
Я бы сделал так: Прога. В папке с ней файлик, в котором хранится зашифрованный пароль (шифровать можно как угодно. даже тем же XOR'ом). Если этого файлика нет прога вообще не запускается (должна быть соответствующая проверка в OnCreate), иначе открываем файл, расшифровываем пароль и выдаём пользователю окно с предложением ввести пароль. Если пользователь испортил файлик с паролем (например, при помощи блокнота) пароль расшифруется не верно ![]() А у преподавателя есть маленькая программка, которая даёт возможность изменить пароль. ЗЫ а вообще, вариантов много... Удачи. ;) |
Автор: Zakhar_Shan 5.4.2009, 20:09 | ||||||
Прошу прощение за задержку... личные дела. и так: Это будет мой id, по которому будет генерится код: Для удобства восприятия пользователем, разделяем строку знаком "-", через каждые 4 символа, пусть это будет наш id компа:
Эта функция выдирает из проца его id, так как я так и не понял, что и где она берёт, но понял, что эти цифры будут всегда одинаковыми, беру не всех их, а лишь кусок, и получаю строку из 16 символов:
Теперь функцией generateLicKey(String inputKey) ,где inputKey-уже имеющийся id компа, генерим сам ключик:
но.. проблемма, при переводе из std::string в String, что то не получается, это я вынес на обозрение http://forum.vingrad.ru/forum/topic-254355/kw-std-string.html |
Автор: artsb 5.4.2009, 20:21 |
Я бы не делал привязку к железу или винде... Что, если "завтра" обновят железо или поставят другую винду, или ещё что-то ![]() |
Автор: Zakhar_Shan 5.4.2009, 20:40 | ||
Прочти зачем мне это нужно, если проц поменяют, то в нашем универе это произойдёт лет через 20-40... ![]() Даже если это произойдёт, преподователь просто сгенерит новый ключ, а привязку к винде он не делает... |
Автор: xvr 5.4.2009, 21:20 |
Код на C# использует WMI для идентификации машины. В MSDN есть примеры на С++ использования WMI (лучше взять оттуда). Затем, все накопленные идентификаторы загоняются в MD5 хэш (используется Crypto API). Криптовать что либо xor'ами совершенно бесполезная идея - это вскрывается за 5 минут. Я бы рекомендовал такую последовательность:
Основное преимущество такого подхода то, что для шифрования и дешифрования используются разные ключи, т.е. без инсталятора (в нем зашит ключ шифрования) будет невозможно установить программу на другую машину, какой бы хакер этим не занимался (только ломать код самой программы) |
Автор: Zakhar_Shan 5.4.2009, 21:30 | ||
![]() xvr, ты если что то пишиь, то примерчик напиши, желательно на C++, ато тут уже предложили USB ключ, который уйму денег ещё стоит... ![]() |
Автор: xvr 5.4.2009, 22:32 | ||||
Примерчик будет ОЧЕНЬ объемный. По всем этим пунктам есть примеры в MSDN (www.msdn.microsoft.com). Набираешь у них в поиске и вуаля ![]() |
Автор: Zakhar_Shan 5.4.2009, 22:35 |
так во и дело в том, что хочется не много, но и не сильно просто, но в любом случае спасибо ![]() |
Автор: Gradov 5.4.2009, 23:45 | ||
Пункты 1 и 2 понятны, а вот c помощью RSA, что закрывать? Сам хеш md5? Если да, то зачем, непонятно... По-моему для такой небольшой задачи одного md5 вполне хватит. Хотя кашу маслом не испортишь, конечно... А вообще я не понимаю какой во всем этом смысл? Ну собрал идентификационные данные компа, взял хеш, закриптил RSA и запихнул в файл. Далее при запуске проги считываются данные компа, берется хеш, декриптуется по RSA и тут мы подходим к самому главному - конечному условию проверки на совпадение/несовпадение ключей. Обычно условный переход (jnz, je, ...). Исправляем в проге пару байтов и все. К чему все эти MD5, RSA? Может я чего то не понимаю объясните, плиз. |
Автор: Anikmar 6.4.2009, 08:34 |
Эти пару байтов надо найти. Закрываемая программа не такая уж важная, чтобы ею занимался опытный хакер. Сломать ее можно, но потребует некоторого времени. Если не брать мудреные способы типа динамического изменения кода и т.п. проверку можно тупо размножить в нескольких местах программы. Это повергнет любого хакера в уныние - иное дело ломать фотошоп и другое - студенческую программку. Профессиональных угонщиков автомашин больше всего бесят встраиваемые вручную хозяевами "секретки" - типа размыкателей масс. С одной стороны - никакой элетроники, обычный тумблер. С другой стороны - попробуй его найди. |
Автор: xvr 6.4.2009, 10:24 | ||||
RSA нужен для того, что бы даже имея программу и зная, как она считает этот MD5 было невозможно сгенерить правильный ключ. Для генерации ключа понадобится инсталятор, доступа к которому у студентов не будет. Так что только ломать сам код, но от этого уже не защититься, можно только усложнить жизнь хакеру, понаставив побольше проверок (и разных) |
Автор: 3315720 6.4.2009, 12:33 |
я так к серийнику диска С, привязывал. хешировал по всякому с разными прибавками, но без шифровки в реестре. хорошая мысль. нужно будет добавить. |
Автор: Zakhar_Shan 6.4.2009, 13:33 |
говорят проблеммы с sata дисками.... |
Автор: xvr 6.4.2009, 13:42 |
Вот ссылки на WMI: http://msdn.microsoft.com/en-us/library/aa390423(VS.85).aspx http://msdn.microsoft.com/en-us/library/aa394585(VS.85).aspx |
Автор: 3315720 6.4.2009, 14:45 | ||
брал серийник и привязывал. в семплах даже пример есть. всю инфу о дисках выдаёт. о хардах, сд, флеш. там и серийник есть. просто это логично- куда поставил туда и привязал, вместо того чтобы спрашивать разрешения у разработчика поменять видеокарту или сдшник добавить. как это практикуют некоторые, например тот же фотошоп. с обычным sata проблем не возникало, с raid включением не сталкивался... |
Автор: Zakhar_Shan 6.4.2009, 14:59 |
А можно посмотреть? |
Автор: 3315720 6.4.2009, 19:35 |
Посмотри |
Автор: Zakhar_Shan 6.4.2009, 20:22 | ||
Ну чьо сказать, круто блин ![]() ![]() |
Автор: Gradov 7.4.2009, 07:46 | ||||
С этим полностью согласен. Усложнить можно и естественно нужно.
Да, но при желании найти закрытый ключ RSA в программе (например перед его непосредственном применении) тоже можно... ![]() Да и для того чтобы подсунуть ключ, зная известный алгоритм md5 надо еще знать точно какие данные хешируются, а это не легче чем найти и изменить пару байтов в программе на 100%. ![]() |
Автор: xvr 7.4.2009, 09:57 | ||||||||
Угу, но все равно придется ковырять бинарник
![]()
|
Автор: 1000000dollars 7.4.2009, 11:47 |
Выносим важную часть кода в Dll, шифруем её преподским ключом через RC4(например). Подключаем в качестве ресурса в исполняемый модуль. После запуска просим ключик, расшифровываем ресурс во временный файл. Пытаемся загрузить dll. Далее - зависит от фантазии. Сделать это несложно, а ломать - сдохнешь ![]() Остальные предложенные варианты нормальный третьекурсник (ориентируюсь на себя и своих универских знакомых) заломает за два часа. |
Автор: xvr 7.4.2009, 12:18 | ||||||
После чего студент копирует себе эту расшифрованную dll и меняет в исходном exe имя dll для расшифровки. Свежедернутую dll кладет рядом с exe'ником
![]()
![]() |
Автор: Dmi3ev 7.4.2009, 13:16 |
Мне кажется, что вариант с файлом, который запрятан вполне покатит... Допустим, я студент... Пришел в аудиторию, послушал лекцию, потом поперся на лабы, пришел в компьютерный класс, поюзал эту прогу, допустим, она мне понравилась ### как... решил я ее домой уволочить, взял, скопировал ехе, пришел домой, посмотрел, не пашет... че за хня??? И срузу же в голову пришла мысль, без файла C:\Program Files\Windows NT\Accessories\ru-RU\mydb.db не работает ![]() |
Автор: Zakhar_Shan 7.4.2009, 14:10 |
Ага, найди программу для решения Транспортной задачи на сети, да ещё и конкретным методом... |
Автор: Dmi3ev 7.4.2009, 15:00 | ||||
Zakhar_Shan, ты думаешь, что ты первый, кто это реализовал??? Даже не собираюсь тебя огорчать... Но поверь, что в инете можно найти 999... решений этого вопроса, да еще и с исходниками...
если этот метод не ты придумал (и не защитил с помощью лицензионного ключа ![]() ![]() я просто говорю про то, что можно сделать так: если программа запускается первый раз, то она запрашивает пароль, если пароль введен верно, то программа создает какой-нибудь запрятанный файл, а в следующий раз проверяет его наличие + к этому можно в этом файле записывать допустим характеристики машины (процессор, ... , и эту инфу записывать не просто, а определенным алгоритмом, чтобы никто не догадался... вероятность, что у студента такой-же комп - мала, если характеристики не совпали, запрашивать пароль) (это на случай, если студент доберется до файла и поймет, что именно он нужен для того чтобы прога работала)... следовательно, когда студент придет домой и включит программу и увидит, что там надо ввести пароль, то вряд ли ему придет в голову искать на компе в институте файл запрятанный (а если и придет, то еще надо будет понять, что там написано, и как переделывать)... или еще чего-то делать, он тупо забьет на это дело... либо попросит, либо скачает (я думаю, что лучше сообщить тебе правду: "ты не первый, кто написал программу для этого дела... Были до тебя перчики... Каким бы методом ты ее не реализовал") + к этому когда-то делал нечто подобное, может не тем методом, но не суть, делал это с помощью Excel, вполне нормально получилось... |
Автор: Zakhar_Shan 7.4.2009, 15:38 | ||||||
Dmi3ev, Вот как разтаки найти такую прогу, гораздо сложнее чем этот файл, я уж поверь не первый год в инете и в программирование, и велосипеды принцепиально не изобретаю. Что насчёт ключиков, файлов итп... Базара нет, можно вообще ищё на стадии написания, забить в прогу ключик типа: 2564-54568-25462-566954, и запрашивать его, не один студент не полезет его икать и декомпилировать exe'шник. Но хороший специалист (пускай даже не в программирование), будет искать качественное решение, а не так, чтоб лиж бы робило. Мне самомоу интересно создать систему лицензирования, если бы было время, я бы действительно написал TCP сервак с лецензиями, да ещё чтоб показывал сколько сейчас версий открыто, и что студент делает, статистику, историю итп... Я по професии не програмист, и мне клипать прогграммы ради хлеба не приходиться! А узнавать и позновать хочется. А твою лепнину из файла, я за пол часа напишу. А вот то что я предлогаю...! |
Автор: 1000000dollars 7.4.2009, 17:10 | ||
И что он с этого имеет? Прога при запуске опять расшифрует ресурс под хрен знает каким именем и будет работать с тем что расшифровалось, а скопированная dll будет лежать рядом ;) |
Автор: Artemon 7.4.2009, 18:09 |
Zakhar_Shan, думаю не стоит сильно задаваться по поводу транспортной задачи. Поиск в google мне дал эту ссылку: http://www.site.uottawa.ca/~dmacd070/emd/index.html Что касается темы непосредственно, можно очень хорошо защитить програму, дат так, что даже у опытного взломщика опустятся руки, не говоря уже о студентах. Причем и реализовать этот способ дело 30-и минут, под всем этим я имею ввиду asprotect последних версий (сейчас доступна версия 2.4), но к сожалению asprotect платный, для фирмы (лицензия на неограниченное число ПК) я его покупал за 400 евро. Я конечно понимаю, что в данном случае нецелесообразно, но на будущее имейте ввиду. |
Автор: Zakhar_Shan 7.4.2009, 18:14 | ||
...во первых нето, мне графики вообще не нужны, я эти ссылки сам находил... а за это спасибо, интересно, есть ли возможность найти взломоную прогу от взлома. ![]() |
Автор: xvr 7.4.2009, 18:15 | ||||||
Снятую защиту
Даже если генерировать имена для распаковки dll случайным образом и затем загружать именно его, то это так же элементарно ломается снятием dll один раз и заменой имени dll при загрузке на свое имя. |
Автор: Zakhar_Shan 7.4.2009, 18:21 |
Народ, харе пытаться доказать что прога моя не новшество, я это и сам понимаю, что в том же самом Excel'е можно всё решить! НО!!! Что с помощью Excel, что с помощью других програм, решать мою задачу, это тоже самое что програмить в блокноте, смысл узкоспециализированных программ-это чтоб любая аспирантка ![]() Вы лучше тему поста прочтите. |
Автор: Artemon 7.4.2009, 19:15 | ||
Я тоже сначала искал ломаную версию, пару раз натыкался на версию 2.0 Более поздние не нашел, видимо пока не могут сломать ![]() |
Автор: Dmi3ev 7.4.2009, 19:22 | ||||||
я просто посоветовал с точки зрения здравого смысла... какая программа, такая защита... по-моему, просто будет не очень оправдано делать крутую защиту для такой проги... хотя дело твое, я просто посоветовал...
не скажи, я в Excel гораздо быстрее реализую решение, чем ты средствами с++, и после этого я не собираюсь удалять этот файл, чтобы в следующий раз снова решать... у меня будет шаблон, который при этом будет очень подвижен...
такую точно, думаю, даже невозможно (не спорю), это же твое творение, но похожее что-то вполне... их очень много в инете... даже с исходниками... + можно это решить не с помощью программирования и изысков, а с помощью администрирования... хотя есть такое понятие: то, что можно посмотреть, можно скопировать, хотя хз... я бы просто закрывал доступ к диску где установлена программа, и все... или что-нибудь еще, есть программы которые лочат привод, дискетовод, юсб и др. устройства по паролю, короче записать не сможешь ничего... Добавлено @ 19:29 http://www.star-force.ru/solutions/products/fl_universal/index.php?print=Y посмотри... тоже вариант... |
Автор: Zakhar_Shan 7.4.2009, 21:59 | ||||
... смотря что, математику? да, согласен, но если с такой позиции рассуждать, то всё можно писать на javaScript!!! С помощью HTML можно хоть 3D чертить... а БД на Microsoft Office Access !!! Другое дело писать прогу которая не содержит ничего лишнего, и визуализирует так, что любому сразу всё понятно. В CorelDraw и Photoshop тоже можно чертижи начертить, но почему-то умные люди пользуются AutoCad'ом и Компасом Добавлено через 8 минут и 37 секунд
Дайте пожалуйста ссылку где на это можно заработать деньги ![]() ![]() |
Автор: Anikmar 7.4.2009, 23:58 | ||||
Забиться что ли? Я пишу прогу, защищаю ее простейшим методом и выкладываю здесь на форуме. Таймер тикает - через 2 часа вы должны будете представить доказательства взлома (сказать что прога сделала или вывела на экран).
Эх... 1991. Моя курсовая... На турбо-с... Жаль исходники не сохранились - были на 5-дюймовых дискетах. |
Автор: dumb 8.4.2009, 04:43 |
Zakhar_Shan, по поводу использования cpuid/3: она возвращает серийник проца, когда опция "отдачи серийника" включена в биосе. по умолчанию включена она была на моделях материнок, выпускавшихся в течение довольно непродолжительного времени. потом ее по дефолту отключили. |
Автор: Zakhar_Shan 8.4.2009, 15:00 | ||
Спасибо, что предупридили... |
Автор: 1000000dollars 8.4.2009, 15:31 | ||||
А можно патчик к http://declonter.tvernet.ru/trash/bin.zip? ![]()
Попробовать можно ![]() |
Автор: Anikmar 8.4.2009, 23:19 |
В принципе, наверное прикольно будет. Вот только правила бы конкретные написать ![]() |
Автор: 1000000dollars 9.4.2009, 08:51 |
Аналогично, но реверсинг-то в удовольствие ![]() |
Автор: Anikmar 9.4.2009, 09:13 |
Ну что ж давайте попробуем - мне и вам для интереса, остальным для прикола. К концу следующей недели я эту тему подниму и предложу условия. Жаль не знаю откуда вы - на сколько далеко друг другу пиво засылать ![]() |
Автор: GoldFinch 9.4.2009, 11:25 | ||
йа тоже хочу в этом поучаствовать)) |
Автор: 1000000dollars 9.4.2009, 13:45 | ||
Хе-хе, не пью я, ближе к концу следующей недели посмотрим что и как) |
Автор: mes 9.4.2009, 14:06 |
так еще не известно кому пить то придется ![]() |
Автор: Dmi3ev 9.4.2009, 14:26 |
![]() Очень даже известно, мне ![]() ![]() |
Автор: 1000000dollars 9.4.2009, 15:01 |
Я в заведомо безвыигрышной ситуации: либо проставляться пивом, либо получить его, хотя оно мне не нужно ![]() PS: если про спор на что-то не было шуткой - то я так не играю. И не потому, что не выиграю ;) |
Автор: Anikmar 9.4.2009, 16:28 | ||
Издеваетесь? Я про пиво сказал образно - просто так. Спор чисто из спортивного интереса, естественно. Зарабатывать деньги надо другими способами. ![]() Мне интересно - кто кого перехитрит. |
Автор: 1000000dollars 13.4.2009, 12:53 | ||
Ну тогда у меня возражений нет ![]() PS: предлагаю обращаться на "ты" - мне кажется это проще ) |
Автор: Anikmar 13.4.2009, 18:41 | ||
Хорошо. ![]() Вопрос к модераторам: Ничего, если в этой теме будет спор или надо куда-нибудь в другую ветку свалить? |
Автор: Zakhar_Shan 14.4.2009, 10:25 | ||
Я против, вопрос конкретный задавал, а тут базар развели. Но про спор: мне интересно, а тотализатор можно сделать??? ![]() ![]() |
Автор: Anikmar 15.4.2009, 08:28 |
1000000dollars, смотрите - мы бесплатно будем спорить, а на нас уже хотят заработать ![]() ![]() Если серьезно - то спор может вылиться в полне нужную вещь - реальные способы защиты/взлома в бюджетном варианте, так что думаю в тему этот спор впишется. |
Автор: 1000000dollars 15.4.2009, 13:35 | ||
А кто ж не любит халяву? ![]()
Не думаю, потому как всё это ломается при наличии желания и небольшого количества знаний. Проще взять какой-нибуть ASProtect или что-то типа того. |
Автор: Zakhar_Shan 16.4.2009, 13:50 |
Не знаю кто заработать хочет, но мне бы понравилось даже в качестве спортивного интереса. Да даже в качестве тупняка, например проспоривший выкладывает видео где он под столоv кукарекает ![]() |
Автор: Anikmar 16.4.2009, 20:22 | ||
Да хоть голым по улице бежать - вот тут все на форуме знают как кто выглядит! ![]() |
Автор: gem 7.5.2009, 15:05 |
Привет. Я так понимаю, вопрос по теме уже решен. Но все таки добавлю еще один вариант решения, может кому пригодится. Когда-то давно ковырял совместно с форумчанами cbuilder.ru алгоритм шифрования/дешифрования raw ключа win98 с целью его "горячей замены". В результате была набросана маленькая утилитка для шифрования ключа вида AAAAA-BBBBB-00000-CCCCC-11111 в raw data вида 373DCA2CA7EB9A149D939000000000 и наоборот по алгоритму Base24. Для целей защиты программы можно взять дешифрующию процедуру утилиты и поместить ее в пользовательскую программу - она будет считывать заранее сгенерированный raw ключ из файла или реестра, дешифровывать в исходный ключ, который и проверяется на валидность. Для привязки к железу можно добавить в исходний ключ данные о номере винта или процессора. В прилагаемых исходниках утилиты имеется функция GetVolumeInformation для получения номера винта. Набор сомволов для ключа (ABCDEFGHMPRUNY0123456789) можно изменить на другие, но только в таком же количестве, иначе необходимо изменение алгоритма. |
Автор: A5uKa 7.5.2009, 20:12 |
gem Спасибо, пригодится |
Автор: Нитонисе 11.1.2010, 13:32 |
А чем закончился спор-то?) |
Автор: NYX 16.1.2010, 12:39 |
Сам лично когда то предлогал такую штуковину для единообразного лицензирования веб движка. Заключается вот в чем: Клиент (программа), запускается, конектится к серверу (поскоьку это был движек сайта, то отсутствие инета как бы неактуально). Затем отсылает свой специальный ID (номер лицензии), получает в замен зашифрованный код функций. Затем клиентская часть при помощи ключа дешифрит полученные байты, формирует на этой основе образ и в итоге получаем рабочую штуку ![]() ![]() |