Форум
Написать нам
  • Страница 1 из 1
  • 1
Модератор форума: as-master  
Простейший скрипт для создания триальной программы
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
no

Никак нельзя вычислить, запускался ли данный exe на другой машине или нет. Только если рядом с программой будет какой-то якобы хитрый файл, нужный для её работы, и в него записать этот флаг. В принципе, как вариант. А файл шифровать.

А если посложнее - делать активацию программы через интернет. Но это уже непросто... И самому такое осилить - не каждый сможет.

Ну или можно делать генерацию ключей на запуск с привязкой к железу клиента.

И как обычно, мы любим задавать пользователям такой вопрос: что такого вы сделали, что это нужно защищать? scratch



Вечная память Андрею Сергееву!
 
Alex3AДата: Суббота, 17 Апреля 2010, 00:58 | Сообщение # 8
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
Quote (YURIY)
А если посложнее - делать активацию программы через интернет. Но это уже непросто... И самому такое осилить - не каждый сможет.

Не так страшен черт как его малюют :D
При желании это осуществимо.
 
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)
А то я часто люблю практиковать закрытие тем в подобных ситуациях...

Понял, прошу прощения. redface
Буду создавать новую тему.

С этой темой вроде как подходит к концу, провел пару тестов сегодня ночью. Пока все работает.

Принцип такой, при запуске в программе стоит ограничение, считывающее строку из реестра, если ее значение равно 1, то запуск программы продолжается, если нет то просит зарегистрировать приложение, Так же есть еще одна программа, имитирующее регистрацию, заносящая это значение в реестр и при выходе из которой она само удаляется, для ограничения копирования. :D )

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 обратно его же и прочитает.

Знаеш, у меня на сарае .... написано, а там дрова лежат :D
Так вот не надо путать расширение файла и его формат, расширение это несколько
букафф в имени файла, после точки- которое может быть какое тебе угодно, а формат
файла это способ размещения в файле данных, где в каком виде и какие данные там
размещены. Создай текстовый файл, напиши в нем "плахой файлик" затем переименуй
его в, скажем, qq.exe потом считай его из ммв
Code
f$='<SrcDir>qq.exe'
S$=StrFromFile(f$,-1,-1)
Message("Any Message String here ...","S$")

А потом можеш его и запустить :D
 
MorseliotДата: Воскресенье, 18 Апреля 2010, 14:42 | Сообщение # 18
Поднаторевший
Группа: Проверенные
Сообщений: 77
Репутация: 0
Награды: 0
Статус: Offline
Quote (Alex3A)
расширение файла и его формат

Все, Понял!) Спасибо!

Quote (Alex3A)
Знаеш, у меня на сарае .... написано, а там дрова лежат

Отличный пример... :D )

Quote (Alex3A)
Так ведь и юзер вполне может заметить что пропал файл...

Ну я полагаю, это может быть даже своего рода приятным сюрпризом для пользователя, Включил, зарегистрировался и тут на тебе и она сама удаляется. Без лишних заморочек. И работает все и мусора не осталось, правдо нелзя сказать тоже самое про реестр, но все равно.
 
Alex3AДата: Воскресенье, 18 Апреля 2010, 19:45 | Сообщение # 19
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
Morseliot,
Можно тупо записать в ехе файл какую либо строку и он, как екзешник умрет. :D
 
toizyДата: Понедельник, 19 Апреля 2010, 02:48 | Сообщение # 20
Студийная субстанция
Группа: Администраторы
Сообщений: 2309
Репутация: 29
Награды: 12
Статус: Offline
Добавка от меня. Все ехе-файлы в винде начинаются с букв MZ, это PE-формат. Винда именно так и отличает ехе от не-ехе, по этим буквам. А ты как думал? ))) Вот это и есть сигнатура.

Добавлено (19 Апрель 2010, 02:48)
---------------------------------------------
zip-файлы имеют первые символы PK. И так далее. Почти все распространённые форматы имеют свою сигнатуру, особенно архивы. Сигнатурный поиск реализован во многих программах типа ArcID


Жизнь оказалась не такой уж и забавной, как поначалу...
 
  • Страница 1 из 1
  • 1
Поиск: