Простейший скрипт для создания триальной программы
|
|
toizy | Дата: Пятница, 06 Апреля 2007, 09:16 | Сообщение # 1 |
Студийная субстанция
Группа: Администраторы
Сообщений: 2309
Репутация: 29
Награды: 12
Статус: Offline
| Вот простейший скрипт для создания триальной программы, который ограничивает количество запусков программы определенным числом (в данном случае это 20): Code LoadVariable("TrialProject","number") If (number <> 0) Then Else number=1 SaveVariable("TrialProject","number") End LoadVariable("TrialProject","number") A = 20-number If (A=0) Then Message("Срок использования программы истёк!","") Exit() End Осталось запусков = 20-number number = number+1 SaveVariable("TrialProject","number") Message("Внимание! Вы используете демонстрационную версию!","Осталось запусков") Скрипт нужно написать в старте первой страницы. Имя ключа TrialProject замените на то, что вам нужно. По истечении 20 запусков программа больше работать не будет. Чтобы сбросить блокирование, нужно найти в реестре ключ с именем TrialProject и удалить его. В сущности, обычный юзер никак не сможет догадаться, как это сделать. И даже немного продвинутый, но не знакомый с ММВ, тоже. Откуда ему знать, какой ключ надо искать в реестре? Вот Ещё один скрипт для создания триальной программы Code CurrentYear=CBK_Year CurrentMonth=CBK_MonthNum CurrentDay=CBK_DateNum LoadVariable("Year","Year") LoadVariable("Month","Month") LoadVar iable("Day","Day") If (Year=0 & Month=0 & Day=0) Then SaveVariable("Year","CurrentYear") Year=CurrentYear SaveVariable("Month","CurrentMonth") Month=CurrentMonth SaveVariable("Day","Cu rrentDay") Day=CurrentDay End Year=CurrentYear-Year If (Year>=2) Then Exit() End If (Year=1) Then Month=Month-CurrentMonth If (Month<>11) Then Exit() Else Day=31-Day+CurrentDay If (Day>15) Then Exit() End End End If (Year=0) Then Month=CurrentMonth-Month If (Month>=2) Then Exit() End If (Month=1) Then If (CurrentMonth=5 | CurrentMonth=7 | CurrentMonth=10 | CurrentMonth=12) Then Day=30-Day+CurrentDay If (Day>15) Then Exit() End End If (CurrentMonth=2 | CurrentMonth=4 | CurrentMonth=6 | CurrentMonth=8 | CurrentMonth=9 | CurrentMonth=11) Then Day=31-Day+CurrentDay If (Day>15) Then Exit() End End If (CurrentMonth=3) Then Day=28-Day+CurrentDay If (Day>15) Then Exit() End End End If (Month=0) Then Day=CurrentDay-Day If (Day>15) Then Exit() End End End If (Year<0 | Month<0 | Day<0) Then Exit() End
Жизнь оказалась не такой уж и забавной, как поначалу...
|
|
| |
Vonkolot | Дата: Среда, 14 Апреля 2010, 17:21 | Сообщение # 2 |
Новый участник
Группа: Пользователи
Сообщений: 22
Репутация: 0
Награды: 0
Статус: Offline
| У меня вопрос что надо вписать во второй скрипт?? Что бы программа стала триальной. Зы создаю CBK_Year CBK_MonthNum CBK_DateNum и добовляю скрипт на стратовую страницу....но как сделать чтобы программа работала например до определенного числа..например 2010.4.20
Сообщение отредактировал Vonkolot - Среда, 14 Апреля 2010, 17:46 |
|
| |
toizy | Дата: Среда, 14 Апреля 2010, 20:00 | Сообщение # 3 |
Студийная субстанция
Группа: Администраторы
Сообщений: 2309
Репутация: 29
Награды: 12
Статус: Offline
| Второй скрипт не о том. If..Then в помощь. Просто нужно сравнить содержимое CBK_* с требуемой датой.
Жизнь оказалась не такой уж и забавной, как поначалу...
|
|
| |
Vonkolot | Дата: Среда, 14 Апреля 2010, 21:20 | Сообщение # 4 |
Новый участник
Группа: Пользователи
Сообщений: 22
Репутация: 0
Награды: 0
Статус: Offline
| все разобрался) спс за помощь вот скрипт Code CurrentDay=CBK_DateNum CurrentYear=CBK_Year CurrentMonth=CBK_MonthNum End If (CurrentYear>=2010 & CurrentMonth>=4 & CurrentDay>=20) Then Exit()
Сообщение отредактировал Vonkolot - Среда, 14 Апреля 2010, 21:33 |
|
| |
toizy | Дата: Четверг, 15 Апреля 2010, 11:58 | Сообщение # 5 |
Студийная субстанция
Группа: Администраторы
Сообщений: 2309
Репутация: 29
Награды: 12
Статус: Offline
| Не за что, обращайтесь )
Жизнь оказалась не такой уж и забавной, как поначалу...
|
|
| |
Morseliot | Дата: Пятница, 16 Апреля 2010, 22:01 | Сообщение # 6 |
Поднаторевший
Группа: Проверенные
Сообщений: 77
Репутация: 0
Награды: 0
Статус: Offline
| Сидел разбирался со всем этим... Вот такой вопрос замучил.., как запретить запуск ехе повторно, знаю, читал предыдущие посты и справку ковырял( там кстати про это всего одна строка и то не в тему) Дело такое, ставлю я галку на Allow only one instance, проект продолжает крутится, выкл, вкл , выкл, вкл...Ну это допустим я решил как раз таки SaveVariable, а что делать с другим пользователем, к примеру Это программа по регистрации. Один пользователь зарегистрировал у себя, дал другому и т.д, можно это дело ограничить всего одним запуском всей программы, может этот флаг как то можно загрузить в Embedded с помощью скриптов? ну и там если его значение равно 1(что говорит о его использованности) то аппликация просто закрывается... Можно?
|
|
| |
YURIY | Дата: Пятница, 16 Апреля 2010, 22:52 | Сообщение # 7 |
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
| Никак нельзя вычислить, запускался ли данный exe на другой машине или нет. Только если рядом с программой будет какой-то якобы хитрый файл, нужный для её работы, и в него записать этот флаг. В принципе, как вариант. А файл шифровать. А если посложнее - делать активацию программы через интернет. Но это уже непросто... И самому такое осилить - не каждый сможет. Ну или можно делать генерацию ключей на запуск с привязкой к железу клиента. И как обычно, мы любим задавать пользователям такой вопрос: что такого вы сделали, что это нужно защищать?
Вечная память Андрею Сергееву!
|
|
| |
Alex3A | Дата: Суббота, 17 Апреля 2010, 00:58 | Сообщение # 8 |
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
| Quote (YURIY) А если посложнее - делать активацию программы через интернет. Но это уже непросто... И самому такое осилить - не каждый сможет. Не так страшен черт как его малюют При желании это осуществимо.
|
|
| |
Morseliot | Дата: Суббота, 17 Апреля 2010, 18:04 | Сообщение # 9 |
Поднаторевший
Группа: Проверенные
Сообщений: 77
Репутация: 0
Награды: 0
Статус: Offline
| Quote (YURIY) Ну или можно делать генерацию ключей на запуск с привязкой к железу клиента. , подумав кстати нашел такой вариант, 1. с помощью выгрузчика Ambedded файлов можно с симулировать что то похожее. К примеру, привязываем файл к проекту( пускай txt) затем при прохождении к примеру регистрации выгрузчик вытягивает этот файл из проекта и удаляет его автоматом из темпа, в нутри проекта так-же прописать строку проверки на наличие этого embedded файла если он не существует соответсвтенно выдает уведомление о том что файл был уже использован и прекращает свою работу. 2. Вариант наверное даже попроще будет, файлы после первого же использования самоудаляются.) Quote (YURIY) А файл шифровать. Это как? Может ммб прочитать строку из файла не имеющего текстового формата?Добавлено (17 Апрель 2010, 18:04) ---------------------------------------------
Quote (YURIY) И как обычно, мы любим задавать пользователям такой вопрос: что такого вы сделали, что это нужно защищать? Занялся созданием портфолио, а человек хочет(не знаю по какой причине) что-бы просмотр был возможен только зарегестрированным пользователям, вот я и озадачился...
|
|
| |
YURIY | Дата: Суббота, 17 Апреля 2010, 19:01 | Сообщение # 10 |
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
| На счёт первого вариант. Перечитал 3 раза и ничего не понял... Quote (Morseliot) Это как? Может ммб прочитать строку из файла не имеющего текстового формата? Что как? Зашифровать файл? Любой (почти) алгоритм реализовать на MMB и использовать его, а лучше поискать плагин. Прочитать строку можно совершенно из любого файла. Только противоречие в Ваших слов: Quote (Morseliot) прочитать строку из файла не имеющего текстового формата Уж определитесь. Если файл текстовый - там будет строка, да. А если бинарный - там, соответственно, будут двоичные данные. Их MMB не прочитает. Quote (Morseliot) что-бы просмотр был возможен только зарегестрированным пользователям А что там за портфолио? Может проще сайт сделать?
Вечная память Андрею Сергееву!
|
|
| |
Morseliot | Дата: Воскресенье, 18 Апреля 2010, 00:19 | Сообщение # 11 |
Поднаторевший
Группа: Проверенные
Сообщений: 77
Репутация: 0
Награды: 0
Статус: Offline
| Quote (YURIY) А что там за портфолио? Может проще сайт сделать? Через сайт распространять собирается, видимо. Quote (YURIY) Что как? Зашифровать файл? Любой (почти) алгоритм реализовать на MMB и использовать его \Вот именно этого аспекта я как раз и незнаю... К примеру имеется некий файл (условно нужный)для запуска программы, как его зашифровать тогда? что-бы пользователь не имел понятия что это за файл и для чего он и не трогал его. Будь это текстовый файл, то его можно просто открыть и увидеть что в нем значение, удалив например которое программа будет запускатся повторно и соответственно при наличии которого повторный запуск не произойдет. Как тогда производить шифрование? Что-бы пользователь не заподозрил о причастности к запуску, этого самого прилегающего файла...
|
|
| |
YURIY | Дата: Воскресенье, 18 Апреля 2010, 01:41 | Сообщение # 12 |
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
| Quote (Morseliot) Через сайт распространять собирается, видимо. Зачем? Я имею ввиду, сделать сайт с портфолио! И давать доступ на просмотр только зарегистрированным пользователям! Не проще ли? Quote (Morseliot) как его зашифровать тогда? Это уже отдельный вопрос. Ещё раз повторюсь: можно зайти в гугл или яндекс и поискать какой-то несложный алгоритм шифрования, чтобы можно было его реализовать в MMB. А ещё лучше поискать готовый плагин. Quote (Morseliot) что-бы пользователь не имел понятия что это за файл Изменить расширение файла. И всё. А за счёт того, что данные в нём будут зашифрованы, текст будет вида "абракадабра". И ничего он там не поймёт. Попробую объяснить свою мысль с шифрованным файлом. В него поместим, к примеру, 2 строки. Первая будет каким-то постоянным текстом, вторая - флаг (запускалась уже программа или нет - 0 или 1). При запуске программы считываем данные из файла, дешифруем, проверяем, чтобы первая строка равнялась некоторому тексту. И считываем вторую. Если равна 1 - закрываем программу. Ну и главное условие - наличие этого самого файла, без него программа также закрывается.
Вечная память Андрею Сергееву!
|
|
| |
toizy | Дата: Воскресенье, 18 Апреля 2010, 02:32 | Сообщение # 13 |
Студийная субстанция
Группа: Администраторы
Сообщений: 2309
Репутация: 29
Награды: 12
Статус: Offline
| Quote (Morseliot) Может ммб прочитать строку из файла не имеющего текстового формата? Quote (YURIY) Если файл текстовый - там будет строка, да. А если бинарный - там, соответственно, будут двоичные данные. Их MMB не прочитает. ММВ прочитает любой файл, разница только в том, что строка оборвётся на символе с кодом 0. Если бинарные данные не имеют такого символа, то читать можно. Если имеют, то нет. Это как PChar в паскале. У Раша был хороший пример работы с битами, там есть XOR функция. Если довести её до ума, то небольшие объёмы данных можно шифровать прямо из ММВ. Хотя... Наверное, проще будет действительно изменить расширение. Ещё, как вариант, стоит рассмотреть использование внедрённой консольной утилиты для шифрования или сжатия (например, 7zip). Распаковывать во временную папку, о чём пользователю будет неизвестно, потом читать оттуда. Добавлено (18 Апрель 2010, 02:32) ---------------------------------------------
Quote (YURIY) В него поместим, к примеру, 2 строки. Первая будет каким-то постоянным текстом, вторая - флаг (запускалась уже программа или нет - 0 или 1) Так делал as-master кое-где. Пожалуй, самый простой подход, если не нужна какая-то экстра-защита.
Жизнь оказалась не такой уж и забавной, как поначалу...
|
|
| |
Morseliot | Дата: Воскресенье, 18 Апреля 2010, 02:49 | Сообщение # 14 |
Поднаторевший
Группа: Проверенные
Сообщений: 77
Репутация: 0
Награды: 0
Статус: Offline
| Quote (YURIY) Ну и главное условие - наличие этого самого файла, без него программа также закрывается. тогда проще наверное сделать так... Есть два файла. Exe и еще какой-то. При первом запуске Программа считывает информацию о присудствии этого файла и продолжает работу,при условии что он есть . При выходе, используя рабочий скрипт Toizy по самоудалению через bat( изложенный в другом топике), удаляется этот прилегающий файл. При повторном запуске он его не обнаруживает и соответственно Exit(). Quote (YURIY) Зачем? Я имею ввиду, сделать сайт с портфолио! И давать доступ на просмотр только зарегистрированным пользователям! Не проще ли? Наверное этого проще, но мне уже просто стало интересно для себя, к примеру сделать программу для регистрации или просто имитирующее это. Добавлено (18 Апрель 2010, 02:49) --------------------------------------------- Quote (toizy) ММВ прочитает любой файл, разница только в том, что строка оборвётся на символе с кодом 0. ТОесть, допустим File$='Data.erf' то я сохраню строку в такой файл, то он обратно его и прочтет оттуда!? Кстати вот такого рода еще заинтерисовал вопрос. Как можно в строке создать пропуск между цифрами. Например a=RND(99999999999) но на выходе сделать вид(Например 3423-5465-8654), еще я заметил что чем больше цифр в a=RND(....................................), тем больше вероятность что a=0, ограничение? надо будет почитать поподробнее......
Сообщение отредактировал Morseliot - Воскресенье, 18 Апреля 2010, 02:57 |
|
| |
YURIY | Дата: Воскресенье, 18 Апреля 2010, 05:50 | Сообщение # 15 |
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
| Quote (toizy) ММВ прочитает любой файл Нет, я не имел ввиду, что вот бинарным файлом MMB "подавится", просто в других языках с ними работа обстоит иначе. Таких функций в нашей любимой программе нет Quote (Morseliot) При выходе, используя рабочий скрипт Toizy по самоудалению через bat( изложенный в другом топике), удаляется этот прилегающий файл. При повторном запуске он его не обнаруживает и соответственно Exit(). Что-то я в ауте. Вы говорите, что нужно удалить внешний файл, а причём тут тогда самоудаление? Не при чём. Просто удалить его при закрытии exe и всё. Quote (Morseliot) то я сохраню строку в такой файл, то он обратно его и прочтет оттуда!? В последнее время я стал Вас не понимать. Не торопитесь яснее выражать свои мысли Хотите спросить: MMB может записать что-то в файл и считать с него? Да, может. Quote (Morseliot) Кстати вот такого рода еще заинтерисовал вопрос. Как это относится к теме? Большая просьба отдельные вопросы заводить в свой топик. А то я часто люблю практиковать закрытие тем в подобных ситуациях... Quote (toizy) Так делал as-master кое-где. Пожалуй, самый простой подход, если не нужна какая-то экстра-защита. гм, не знал! Не сочтите, господа, мои слова выше за плагиат
Вечная память Андрею Сергееву!
|
|
| |
Morseliot | Дата: Воскресенье, 18 Апреля 2010, 12:14 | Сообщение # 16 |
Поднаторевший
Группа: Проверенные
Сообщений: 77
Репутация: 0
Награды: 0
Статус: Offline
| Quote (YURIY) А то я часто люблю практиковать закрытие тем в подобных ситуациях... Понял, прошу прощения. Буду создавать новую тему. С этой темой вроде как подходит к концу, провел пару тестов сегодня ночью. Пока все работает. Принцип такой, при запуске в программе стоит ограничение, считывающее строку из реестра, если ее значение равно 1, то запуск программы продолжается, если нет то просит зарегистрировать приложение, Так же есть еще одна программа, имитирующее регистрацию, заносящая это значение в реестр и при выходе из которой она само удаляется, для ограничения копирования. ) Quote (YURIY) В последнее время я стал Вас не понимать. Не торопитесь яснее выражать свои мысли Хотите спросить: MMB может записать что-то в файл и считать с него? Да, может. Имелось ввиду, формат файла, неужели он может быть абсолютно любым (несуществующим) и MMb обратно его же и прочитает. И простите если где, что, неясно выражаюсь, пишу по ночам и возможны провалы в мысли.
|
|
| |
Alex3A | Дата: Воскресенье, 18 Апреля 2010, 12:43 | Сообщение # 17 |
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
| Quote (YURIY) Нет, я не имел ввиду, что вот бинарным файлом MMB "подавится", просто в других языках с ними работа обстоит иначе. Таких функций в нашей любимой программе нет На самом деле все файлы бинарны по своей природе, все остальное только интерпритация бинарного кода файла. Строка это набор бинарных кодов, который заканчивается бинарным кодом 0. Исходя из этого можно прочитать в строку содержимое любого файла, до первого встреченного бинарного кода 0. Расширение файла в основном предназначено для человека, что бы он как то ориентировался о назначении файла, программы, зачастую руководствуются не расширением файла а сигнатурами, некими кодовыми последовательностями в определенных местах файлов, естественно что прога сначала может проверить и расширение файла, а потом и сигнатуру. YURIY, имел в виду то что у ммв нет непосредственного доступа к бинарным данным в языке скриптов, но такой доступ возможен через плагины. Хоть ммв и работает с множеством бинарных файлов, звук, видео, прочее. Quote (Morseliot) При повторном запуске он его не обнаруживает и соответственно Exit(). Так ведь и юзер вполне может заметить что пропал файл... И вообще, все эти триальности и защиты расчитаны на неискушонного юзера, самое сложное в этом, написать такую прогу что бы ее кто нибудь захотел взломать или лишить триальности.Добавлено (18 Апрель 2010, 12:43) ---------------------------------------------
Quote (Morseliot) Имелось ввиду, формат файла, неужели он может быть абсолютно любым (несуществующим) и MMb обратно его же и прочитает. Знаеш, у меня на сарае .... написано, а там дрова лежат Так вот не надо путать расширение файла и его формат, расширение это несколько букафф в имени файла, после точки- которое может быть какое тебе угодно, а формат файла это способ размещения в файле данных, где в каком виде и какие данные там размещены. Создай текстовый файл, напиши в нем "плахой файлик" затем переименуй его в, скажем, qq.exe потом считай его из ммв Code f$='<SrcDir>qq.exe' S$=StrFromFile(f$,-1,-1) Message("Any Message String here ...","S$") А потом можеш его и запустить
|
|
| |
Morseliot | Дата: Воскресенье, 18 Апреля 2010, 14:42 | Сообщение # 18 |
Поднаторевший
Группа: Проверенные
Сообщений: 77
Репутация: 0
Награды: 0
Статус: Offline
| Quote (Alex3A) расширение файла и его формат Все, Понял!) Спасибо! Quote (Alex3A) Знаеш, у меня на сарае .... написано, а там дрова лежат Отличный пример... ) Quote (Alex3A) Так ведь и юзер вполне может заметить что пропал файл... Ну я полагаю, это может быть даже своего рода приятным сюрпризом для пользователя, Включил, зарегистрировался и тут на тебе и она сама удаляется. Без лишних заморочек. И работает все и мусора не осталось, правдо нелзя сказать тоже самое про реестр, но все равно.
|
|
| |
Alex3A | Дата: Воскресенье, 18 Апреля 2010, 19:45 | Сообщение # 19 |
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
| Morseliot, Можно тупо записать в ехе файл какую либо строку и он, как екзешник умрет.
|
|
| |
toizy | Дата: Понедельник, 19 Апреля 2010, 02:48 | Сообщение # 20 |
Студийная субстанция
Группа: Администраторы
Сообщений: 2309
Репутация: 29
Награды: 12
Статус: Offline
| Добавка от меня. Все ехе-файлы в винде начинаются с букв MZ, это PE-формат. Винда именно так и отличает ехе от не-ехе, по этим буквам. А ты как думал? ))) Вот это и есть сигнатура. Добавлено (19 Апрель 2010, 02:48) --------------------------------------------- zip-файлы имеют первые символы PK. И так далее. Почти все распространённые форматы имеют свою сигнатуру, особенно архивы. Сигнатурный поиск реализован во многих программах типа ArcID
Жизнь оказалась не такой уж и забавной, как поначалу...
|
|
| |