Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.80/41: Рейтинг темы: голосов - 41, средняя оценка - 4.80
 Аватар для Stick
4 / 4 / 1
Регистрация: 26.11.2009
Сообщений: 156

Ограничение количества запусков программы

15.02.2017, 13:23. Показов 8916. Ответов 55
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Есть программа, количество запусков которой нужно ограничить. Допустим 5 раз и больше программа не запускается вообще. На машине нет интернета.
почитал темы Как сделать "демо"-версию программы? и Демо-версия программы.
Получил два этапа проверки: записываю количество запусков в реестр и в параметр в ресурсах проекта.

На сколько такой способ заслуживает право на жизнь и можно ли каким-то лучшим способом ограничить работу программы?
Спасибо!

Добавлено через 3 часа 2 минуты
А можно куда-нибудь прикрутить хеш-функцию?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.02.2017, 13:23
Ответы с готовыми решениями:

Как запомнить админские права для дальнейших запусков программы
как запомнить админские права для дальнейших запусков? есть прога(без установки), в ней манифест с известным ...

Ограничение количества нажатий на кнопку
Здравствуйте, появился вопрос ограничения количества нажатия кнопки. Форма авторизации, и хочется сделать определенное количество попыток...

Ограничение количества раз записи файла
Здравствуйте. У меня проблема заключается в том, что при запуске у меня телефон записывается в textBox и из него потом при нажатии на...

55
Эксперт .NET
 Аватар для Usaga
14099 / 9316 / 1349
Регистрация: 21.01.2016
Сообщений: 34,991
15.02.2017, 13:33
Stick, программы на C# очень легко декомпилируются. Подобные виды защиты бесполезны для них.
0
 Аватар для Stick
4 / 4 / 1
Регистрация: 26.11.2009
Сообщений: 156
15.02.2017, 14:48  [ТС]
Usaga, читал про обфускаторы. Похоже они тоже добра не принесут?
Предположим, что с программой будет работать пользователь разбирающийся с regedit и умеющий пользоваться блокнотом. Что можно использовать против таких пользователей?
0
33 / 33 / 18
Регистрация: 16.09.2015
Сообщений: 246
15.02.2017, 15:22
Цитата Сообщение от Stick Посмотреть сообщение
Предположим, что с программой будет работать пользователь разбирающийся с regedit и умеющий пользоваться блокнотом. Что можно использовать против таких пользователей?
текстовый файл с расширением .dat и простенькое шифрование данных (менять символы на вводе и выводе, я делал просто, в алфавите столько то букв, в файл пишется не буква, а порядковый номер буквы в алфавите)
0
Эксперт .NET
 Аватар для Usaga
14099 / 9316 / 1349
Регистрация: 21.01.2016
Сообщений: 34,991
15.02.2017, 16:18
Stick, ну, от нормальных пользователей вполне можно и реестром защититься. Главное хранимые там данные хоть как-то зашифровать, чтобы совсем уж не палить контору. Это защита детская, но в простой ситуации проканает.

Обфускаторы "шифруют" тело EXE-шника так, чтобы по нему нельзя было восстановить исходники. Насколько я понял по отзывам людей, нормально обфусцируют только платные, халявные делают это крайне плохо.
0
 Аватар для SharpDeveloper
141 / 138 / 22
Регистрация: 16.02.2012
Сообщений: 453
15.02.2017, 17:09
Храни кол-во запусков в настройках (Settings.Default.MyParam), значение шифруй при записи и расшифровывай при чтении (плюсом будет симметричный ключ, значения параметров ключа бери из параметров компьютера). Защити программу протектором. В 99% это будет весьма сильная защита.
0
Эксперт .NET
 Аватар для Usaga
14099 / 9316 / 1349
Регистрация: 21.01.2016
Сообщений: 34,991
15.02.2017, 17:23
SharpDeveloper, ничем эта "защита" не лучше записи в реестр. Даже хуже: кто помешает просто скопировать файл (или вообще всю папку с приложением), а потом назад его подменять?
0
 Аватар для SharpDeveloper
141 / 138 / 22
Регистрация: 16.02.2012
Сообщений: 453
15.02.2017, 17:25
Цитата Сообщение от Usaga Посмотреть сообщение
Даже хуже: кто помешает просто скопировать файл (или вообще всю папку с приложением), а потом назад его подменять?
Update: верное замечание. Но в таком случае это можно будет сделать и с реестром. Можно усложнять логику - писать и в настройки и в реестр, защита станет лучше, но усложнит поддержку.
0
Эксперт .NET
 Аватар для Usaga
14099 / 9316 / 1349
Регистрация: 21.01.2016
Сообщений: 34,991
15.02.2017, 17:26
Stick, мне кажется, что если речь идёт о демке, то лучшим вариантом будет давать пользователю урезанный вариант программы. Ну и хоть каким-то протектором код защитить.

Если протектор и можно "обойти", то "урезанность" будет сложновато

Добавлено через 48 секунд
SharpDeveloper, и? Что помешает не копаться в файле, а просто назад оригинальную версию скопировать? И плевать как оно зашифровано.
0
 Аватар для SharpDeveloper
141 / 138 / 22
Регистрация: 16.02.2012
Сообщений: 453
15.02.2017, 17:31
А чтобы копировать файл настроек программы, надо знать как работает защита (от этого знания помогает как раз протектор) и что копировать (этот файл хранится глубоко в недрах папок). Что обычному домашнему пользователю врят-ли будет доступно.
0
Эксперт .NET
 Аватар для Usaga
14099 / 9316 / 1349
Регистрация: 21.01.2016
Сообщений: 34,991
15.02.2017, 17:38
SharpDeveloper, чтобы скопировать файл, нужно знать только где он лежит и не более Тебя сильно что-то станавливает от копирования любых твоих файлов?))

Тут можно только сильно запутать пользователя, сныкав файл куда-нибудь очень далеко и на долго. Но реестр в этом плане намного лучше - там уже помойка адская, да и сломать что-нибудь можно. К тому же, народа знающего как лазить по реестру намного меньше умеющих шариться по дискам)

Добавлено через 3 минуты
Хотя мне кажется, что файл, что реестр - это всё десткий садик. Любой из этих вариантов либо человека наглухо остановит, либо рассмешит
0
 Аватар для SharpDeveloper
141 / 138 / 22
Регистрация: 16.02.2012
Сообщений: 453
15.02.2017, 17:41
Да тут видимо защита от домашнего пользователя, продвинутый возьмет filemon и regmon и плакали что файлы, что реестры. Local settings тоже помойка, попробуй найди там этот файл).
Лучше тогда просто писать в Temp, причем название файла генерировать уникальное для этого компьютера, и пусть копаются в еще большей помойке))
0
Эксперт .NET
 Аватар для Usaga
14099 / 9316 / 1349
Регистрация: 21.01.2016
Сообщений: 34,991
15.02.2017, 17:44
SharpDeveloper, не, в temp опасно - там какой-нибудь Disk Cleaner может побывать. Тогда уж в профиль пользователя писать, вместе с регулярными настройками и не париться.
0
 Аватар для Stick
4 / 4 / 1
Регистрация: 26.11.2009
Сообщений: 156
15.02.2017, 20:16  [ТС]
Usaga, как раз таки уже ограничил функционал по максимому: беру данные, обрабатываю, вывожу на экран. Суть-то в том, чтобы показать правильность вычислений .

SharpDeveloper, как брать параметры компьютера научили тут: Уникальный идентификатор компьютера. А вот как зашифровать полученную последовательность?

aurisdies, вы предложили использовать простую замену. Мне трудно представить как получить результирующую строку из "данные компьютера" + "счётчик запуска", например в такой форме:
1BC29B36F623BA82AAF6724FD3B16718
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
15.02.2017, 20:24
Stick, возможно, такой способ вам поможет. Правда, он рассчитан не на количество запусков, а на дату, но тоже вполне ничего.
1. Создаем приложение, подписываем его.
2. В приложение встраиваем защиту, основанную на основе сертификата X509, для бОльшей уверенности можно проверку раскидать по всему коду. Защита должна быть реализована так, чтобы без файла сертификата (валидного) программа отказывалась работать.
3. Создаем сертификат, в котором и прописываем даты его действия.
При запуске программа проверяем его валидность, если он не валидный - вылет.
Конечно, и это можно обойти (сменой даты на компьютере), но если накрыть все это сверху еще и обфускатором - думаю, от не продвинутых поможет.
1
13 / 12 / 4
Регистрация: 20.05.2016
Сообщений: 325
15.02.2017, 22:55
1. В демо-версии сделать ограниченный функционал.
2. Обычно даётся не какое-то определённое кол-во запусков, а период времени. Тогда можно записать время старта в какой нибудь DAT файл и при каждом запуске сверять его с текущим временем. Для надёжности можно защитить шифрованием (думаю, это излишне) и спрятать этот файл куда нибудь от пользователя.
3. Если вы прям так по кол-ву запусков хотите, то нужно в такой файл записывать число запусков и шифровать всё.
0
 Аватар для Stick
4 / 4 / 1
Регистрация: 26.11.2009
Сообщений: 156
15.02.2017, 23:12  [ТС]
insite2012, идея хорошая, только X509 требует наличия сервера выдачи сертификатов, а его нет .

dm stark, именно по количеству запусков . Хотя мне не ясно как шифровать.
0
13 / 12 / 4
Регистрация: 20.05.2016
Сообщений: 325
15.02.2017, 23:24
Всмысле что вы не знаете как реализовать, скажем, AES шифрование в C#?
0
 Аватар для Stick
4 / 4 / 1
Регистрация: 26.11.2009
Сообщений: 156
15.02.2017, 23:53  [ТС]
dm stark, увы не знаю . В Вузе только теория была...
0
 Аватар для SharpDeveloper
141 / 138 / 22
Регистрация: 16.02.2012
Сообщений: 453
16.02.2017, 00:22
https://msdn.microsoft.com/en-... .110).aspx
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.02.2017, 00:22
Помогаю со студенческими работами здесь

Подсчет количества запусков приложений
Доброго времени суток!!!Помогите пож, очень надо....Нужно написать прогу которая подсчитывает количество запусков приложений в Винде за...

Ограничение количества потоков
Здраствуйте. Допустим есть прокси чекер. Есть тхт файл, в нем 100 прокси. Чекер должен быть многопоточным. Потоки создаются похожим...

Добавить правило на ограничение количества символов в никах
есть скрипт, который запрещает указанный ник(и) и на него действует правило "ban" ... public List<string> PlayerStop =...

Ограничение количества обрабатываемых чисел в одномерном массиве
Мне дан массив из 20 чисел. Вводить его надо вручную. Нужно определить количество инверсий среди этих чисел. Но если ввести например 10...

Ограничение количества символов при записи текста в файл
Здравствуйте, форумчане! Есть такая проблема: записываю текст в файл текстовым редактором вот так: Process p = new Process(); ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru