Что нового

Триал модуль для вашей программы

Sergey2210

Осваивающий
Сообщения
263
Репутация
31
Верия Autoit:3.
Версия:1.0

Категория: Кодирование / Шифрование,Система / Реестр,Разное

Описание: Модуль для создания триальной версии программы и привязки к одному ПК

Модуль работает так:
Пишем скрипт и добавляем в него модуль триала,далее запускаем скрипт и он просит ввести ключ...

Далее пишем патч к модулю,добавляем в него функцию патча,который берет ProductId компьютера,разворачивает наоборот и выводит в инпут,с патчем должен присутствовать дополнительный файл в котором изначально написанно,развёрнуто наоборот и зашифрованно следующее предложение "Trial Lcense register",далее при запуске патча он как говорилось выше "берет ProductId" компьютера из реестра...

Запускаем триал версию программы,изначально модуль проверяет на существование заданного ключа в реестре,если его нет,то выводит форму для ввода ключа,далее сравнивает введённый ключ с ProductId компьютера,если всё верно то программа активна и записывает в дополнительный файл патча ProductId компьютера,если нет выводит ошибку...

после всего этого нельзя будет запустить патч на другой машине,но он будет действовать на той на которой запустили,тоже самое относится к программе

Минусы
- Патч с дополнительным файлом должен находится в директории с программой которую хотим активировать.
- Патч не будет работать без дополнительного файла.

Плюсы
+ В дополнительном файле патча всё зашифрованно через _StringEncript() по этому не возможно или сложно будет посмотреть какие параметры разработчик заложил для пропатчивания.
+ После пропатчивания программы патч и программа не будут работать на других машинах.

Пример программы:
Код:
#include <string.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

$hForm = GUICreate("Video player", 400, 300)
__oActivate_Trial($hForm)
GUISetState()

While 1
    $msg = GUIGetMsg()
	Switch $msg
		Case $GUI_EVENT_CLOSE
			Exit
	EndSwitch
WEnd

Func __oActivate_Trial($hWnd)
	
	Local $__pSerial_Reg,$__pActivate_Key,$__pInput_License
	
	Global $__sExists_Reg = RegRead('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion','License')
	$__sReg_Exists = RegRead('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion','ProductId')
	Global $__sReverse_Map = _StringReverse($__sReg_Exists)
	
	If $__sExists_Reg = $__sReverse_Map Then
		GUISetState(@SW_ENABLE,$hWnd)
	Else	
	If Not $__sExists_Reg Then
	    $__pSerial_Reg = GUICreate("Activation", 310, 80, -1, -1, -1, $WS_EX_TOOLWINDOW)
        $__pInfo_Label = GUICtrlCreateLabel('Пожалуйста,введите серийный номер продукта',10,10,290,20)
        $__pInput_License = GUICtrlCreateInput('',10,40,200,20)
        $__pActivate_Key = GUICtrlCreateButton('Serial',220,40,80,20)
        GUISetState()
		GUISetState(@SW_DISABLE,$hWnd)
	While 1
        $msg = GUIGetMsg()
		Switch $msg
			Case $GUI_EVENT_CLOSE
				Exit
	        Case $__pActivate_Key
	            $__sReg_Read = RegRead('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion','ProductId')
	            $__sReverse_Reg = _StringReverse($__sReg_Read)
				$__sRead_Input = GuiCtrlread($__pInput_License)
	            If $__sReverse_Reg = $__sRead_Input Then
					If Not FileExists(@ScriptDir & '\map.asc') Then  
						MsgBox(262144+48,'Activate','Патч не найден')
						Exit
					Else	
						$__sReg_Read = RegRead('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion','ProductId')
                        $reverse = _StringReverse($__sReg_Read)
						$Pass = 'TrialVersion.3610'
						FileDelete(@ScriptDir & '\map.asc')
						Sleep(500)
                        FileWrite(@ScriptDir & '\map.asc',_StringEncrypt(1,$reverse,$Pass))
					    RegWrite('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion','License','REG_SZ',$__sReverse_Reg)
					    MsgBox(64,'Activate','Спасибо за использование нашего продукта')
					    Exit
					EndIf	
				Else
                    MsgBox(262144+48,'Ошибка','Вы ввели не верный ключ')		
	                Exit
				EndIf
		EndSwitch
	Wend			
	EndIf
    EndIf

EndFunc

Пример патча:
Код:
#include <string.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

Global $Key = __oTrial_Module()
$hForm = GUICreate("Activation Key", 310, 40, -1, -1, -1, $WS_EX_TOOLWINDOW)
$License = GUICtrlCreateInput($Key,10,10,200,20)
$Copy = GUICtrlCreateButton('Скопировать',220,10,80,20)
GUISetState()

While 1
    $msg = GUIGetMsg()
	Switch $msg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Copy
			$ReadKey = GUICtrlRead($License)
			ClipPut ($ReadKey) 
	EndSwitch
WEnd




Func __oTrial_Module()
	
	$__sReg_Result = 0
	
	Global $__oPass_License = @ScriptDir & '\map.asc'
	Global $__oPass_Reg = 'TrialVersion.3610'
	
	$__sReg_Exists = RegRead('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion','ProductId')
	Global $__sReverse_Map = _StringReverse($__sReg_Exists)
	
	If Not FileExists ($__oPass_License) Then
		MsgBox(262144+48,'Ошибка','Не удаётся найти файл MAP.ASC')
		Exit
	Else	
		Local $__oRead_Map = FileRead($__oPass_License)
		Local $__oEcript = _StringEncrypt(0,$__oRead_Map,$__oPass_Reg)
		Local $__sReverse_Key = _StringReverse($__oEcript)

        If $__sReverse_Key = 'Trial Lcense register' Then
	        $__sReg_Read = RegRead('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion','ProductId')
			$__sReverse_Regiser = _StringReverse($__sReg_Read)
			$__sReg_Result = $__sReverse_Regiser
			ConsoleWrite('Пропатчивание программы')
		Else
  	    If $__sReverse_Key = $__sReg_Exists Then
			$__sReverse_Map = _StringReverse($__sReverse_Key)
		    $__sReg_Result = $__sReverse_Map
		    ConsoleWrite('Данный патч использован')
		Else
			MsgBox(262144+48,'Activation Key','Использование патча для Вашей системы запрещено')
            Exit			
	    EndIf          
		EndIf
	EndIf
		
    Return $__sReg_Result

EndFunc

Файл: Trial Modul.rar

Снимок: Нет снимка

История версий:
v1.0

Источник: Русское сообщество AutoIt

Автор(ы): Sergey2210
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
сам скрипт не проверял, и не могу оценить все его прелести, просто хотелось отметить некоторые эпичные моменты в описании ;D
Далее пишем патч к модулю,добавляем в него модуль патча
написанно,развёрнуто наоборот и зашифрованно следующее предложение
напомнило анекдот про
...
– Инна
...
– Аленна
...
;D
да и вообще, от всего описания, у самого мозги чуть не развернулись обратное и не зашифровались. Сергей, я понимаю, ты в AutoIt новичок. Но неужели с русским языком знаком столько же, сколько и с AutoIt?
 
Автор
S

Sergey2210

Осваивающий
Сообщения
263
Репутация
31
Нет просто после написания этого скрипта я сразу выложил его на форум,а при написание поста на ошибки я внимание не обращал и если чесно не хотелось... :smile:
 
Верх