1 | ||||||
Защита программы03.09.2010, 14:07. Показов 11238. Ответов 19
Требуется, чтобы программа работала в двух режимах:
- Режим с ограничениями (демо) - Режим полной функциональности Методы регистрации программы пока что не интересуют. Думаю, как это лучше сделать, в голову пришла такая мысль. Создается специальный класс-защитник, в который инкапсулируется класс основной программы. В главной функции создается объект защитника и запускается. В методе запуска защитника производится проверка регистрационных данных. Если данные валидны, то программа запускается в режиме полной функциональности, если данные невалидны, то в демо-режиме. В класс основной программы добавляется флаг demo_mode, который отвечает за урезку функционала. В GUI интерфейсе можно, например, будет делать недоступными некоторые кнопки. Набросал скелет защитника. Может у кого есть какие идеи по этому поводу?
0
|
03.09.2010, 14:07 | |
Ответы с готовыми решениями:
19
Защита программы Защита от падений программы Защита данных программы Защита программы паролем |
14 / 14 / 3
Регистрация: 12.05.2010
Сообщений: 43
|
|
03.09.2010, 14:18 | 2 |
Сообщение было отмечено как решение
Решение
Совсем не надёжное решение.
5
|
03.09.2010, 14:25 [ТС] | 3 |
promix_17, Все это хорошо, но сейчас меня больше интересует конкретика нежели теория. Для начала мне надо написать хоть какое-то решение, а потом уже "защищаться от взлома".
0
|
14 / 14 / 3
Регистрация: 12.05.2010
Сообщений: 43
|
|
03.09.2010, 14:27 | 4 |
Ну всё равно, решение сразу учись писать надёжное, а то привыкнешь...
0
|
Временно недоступен
957 / 228 / 14
Регистрация: 12.04.2009
Сообщений: 926
|
|
03.09.2010, 20:51 | 6 |
Самое надёжное,наверное,это сервер авторизации и прога с define-ами. Перекомпилировать для разной функциональности.
0
|
Заблокирован
|
|
03.09.2010, 21:01 | 7 |
#pragma, подскажешь как использовать сервер авторизации(или может книжку хорошую) ?
нельзя ведь писать если(ответ с сервера устраивает){ авторизовались } иначе { не получилось } ведь возможно подменить вообще запрос сервера на что-то инное. Чем помогут define-ы не представляю вообще.Про перекопилировать тоже непонял, вот получил для полной функциональности и неполной. Кому-то дал полную версию, как предотвратить ее распространение? (лучше пример конечно)
0
|
155 / 102 / 12
Регистрация: 22.07.2010
Сообщений: 445
|
|
03.09.2010, 21:12 | 8 |
Я вижу тут только одно самое надёжное и простое решение это удаление кусков кода для демо режима.
0
|
03.09.2010, 22:46 | 9 |
Не стоит выдумывать колесо, давно разработана куча техник защиты.
Регулярные проверки CRC на предмет изменения екзешника. Проверки на работающий дебаггер (Skype) Привязка к железу по серийным номерам (Windows). Проблема распространения решается баном серийника, если с двух разных компов высылали запрос авторизации за короткий период (вряд ли один человек может, например, завтра переехать в другую страну, сменить комп, повторить это опять в следующий день и т.д.) С сервера можно получать набор смещений, добавляемых к адресу функции - если адрес неправильный, програма крашанёт. В таком случае заранее нельзя знать, что подобранный код правильный. Можно по-разному изворачиться, банить черезе некоторое время, по рендому и т.п. Но снова ж таки, это всё предположения, догадки. Есть куча людей, к-рые посвятили этому тучу времени и написали соответсвенные статьи.
0
|
1360 / 988 / 119
Регистрация: 30.07.2010
Сообщений: 5,297
|
|
03.09.2010, 22:57 | 10 |
Всегда считал, что демо-версия не должна в принципе имеет в дистрибутиве того функционала, который защищается, тем более если его ещё можно и запустить на исполнение. Методов защиты триал- и демо-версий - полным-полно, выбирайте и встраивайте. Мне, например, нравится вариант, когда при всех охраняемых дествиях, хеш файла программы сверяется с правильным хешем, созданым при сборке дистра. Сам хеш лучше держать не в ресурсах, а в файле, создаваемом при установке в, например, виндире, с не привлекающим внимания именем.
0
|
Временно недоступен
957 / 228 / 14
Регистрация: 12.04.2009
Сообщений: 926
|
|
04.09.2010, 02:56 | 11 |
Продавать. Мало кто захочет распространять то,за что заплачено =) Хотя ещё есть альтруисты,это радует))
0
|
05.09.2010, 09:02 [ТС] | 12 |
Хочется сделать как раз без компилирования, чтобы один дистрибутив в зависимости от наличия регистрации предоставлял различных функционал.
Тогда такой вариант. Основная программа хранится в зашифрованном виде. Программа защитник запускается, проверяет регистрационные данные на валидность, расшифровывает основную программу и выполняет (при чем желательно выполнять прямо из оперативной памяти, не сохраняя расшифрованную копию на диск). Конечно, можно сделать дамп участка памяти с программой, но это уже проблема.
0
|
1080 / 1007 / 106
Регистрация: 28.02.2010
Сообщений: 2,889
|
|
05.09.2010, 09:12 | 13 |
Это будет проблемой, если в программе применены антиотладочные трюки и отладчик не защищен от них. Сам отладчик, например OllyDbg 1.10, можно защитить.
0
|
05.09.2010, 09:17 [ТС] | 14 |
Может быть, в этих вопросах я еще не просвещен
А вот зашифровать/расшифровать файл, а также предварительно проверить контрольную сумму для него несложно. Осталось только извернуться, чтобы запустить код из памяти.
0
|
6 / 6 / 0
Регистрация: 28.07.2010
Сообщений: 12
|
|
13.09.2010, 00:18 | 15 |
Можно подробнее как это реализовывается? Мне на ум приходит только одно - программа получает CRC c какого-то сервера и сверяет его со своим... иначе ведь не реализовать? Если я вписываю CRC в код программы, то её CRC уже меняется...и так можно подобрать, но уйдет вечность...
Так, или я что-то не уловил?
0
|
13.09.2010, 00:54 | 17 |
Ну почему. ЦРЦ считается по вполне математическим формулам. Считаешь сначала ЦРЦ с подставленными в проверке нулями, потом считаешь, каким должен быть ЦРЦ для программы, в которой для проверки используется такой же ЦРЦ.
Добавлено через 7 минут Насколько я знаю, многие проги пишутся в виде виртуальной машины (напр, машины тьюринга). Сначала загрузчик загружаем машину, затем запускает код в этой машине. Если вирт. машина хорошо спроектирована, хакер задолбается её расшифровывать. Всю программу, особенно если она большая, нет смысла в вирт. машину писать - слишком геморройно. http://ru.wikipedia.org/wiki/%... 0%BD%D0%B0 http://seculab.ru/ru/projects-neoguard.php
1
|
23 / 23 / 4
Регистрация: 05.05.2010
Сообщений: 82
|
|
13.09.2010, 15:18 | 18 |
Могу порекомендовать HASP-ключи. Например, Guardant Stealth 3. Я сам имел с ними дело. Можно сделать так, чтобы дистрибутив распространялся бесплатно, а ключ был платным. Без ключа доступен урезанный функционал, а с ключем - расширенный.
Реализуется это через шифрование таблицы констант. Из всех защищаемых функций выбираются константы, создается большая таблица. Она шифруется пару сотен раз с разными ключами и разными алгоритмами и остается в программе. В коде программы есть ключи. Набор алгоритмов для расшифровки находится в HASP-e. Хакер, обладая шифром и ключем, но без алгоритма не сможет ничего сделать. Сотни различных вариантов нужны для того, чтобы усложнить перехват взаимодействия с ключем. Хакер каждый раз будет получать новую последовательность данных с новыми ключами и с новыми запросами.
0
|
23 / 23 / 4
Регистрация: 05.05.2010
Сообщений: 82
|
|
13.09.2010, 15:55 | 20 |
Я упустил один момент. Создатели ключа это предусмотрели и создали систему кодирования приложения. Оно переводится с обычного машинного кода на виртуальный. Причем, при запуске формируется не одна, а целых 5 виртуальных машин, и каждая из них - со своим языком. Работают они по очереди и каждая выполняет свой участок кода. Разбирать это все дебагером очень сложно. Я только не знаю, будет ли такая оболочка работать без ключа. Я с ключом делал.
0
|
13.09.2010, 15:55 | |
13.09.2010, 15:55 | |
Помогаю со студенческими работами здесь
20
Защита программы от неверного ввода Защита программы от остановки процесса Обеспечить надежность программы (защита от ввода неверных символов) Защита программы от НСД. Защита путем шифрования части программы на флеш-диске или флешке Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |