Что нового

[Криптография] Модуль триала. Microteam TrialHype 1.0

Microteam

Осваивающий
Сообщения
74
Репутация
34
AutoIt: 3.3.6.1
Версия: 1.0.0.0
Категория:
Описание: Создание триального периода.

Представляю вам хороший модуль для триала. Microteam TrialHype 1.0. С помощью этого модуля, вы сможете моздать триал для вашей программы. В этом триале всё криптуется по алгоритму RC4. Автоматическая генерация TrialID, это идентификатор. Вот код ниже:


Пример работы имеется. Когда программа активированна, то создается файл в папке с программой Certificat.mcr это файл активации. Он будет работать только на том компьютере, на котором активирован. На других этот файл работать не будет. Справка в самом файле.

Никаких бэкдоров я туда не вставлял. Для некоторых Бэкдор (Backdoor) - это такая программа или дырка в программе, через которую создатель может получить доступ к программе и т.д

Вот ещё вам генератор ключей для Microteam TrialHype. http://microteam.kz/filez/TrialHype_Microteam_v10_2011.rar
(Не пожалел залил его на свой сайт. :smile:

Как работает генератор ключей. Вы вводите ID и пароль который вы указали и он автоматически генерируется и копируется в буфер обмена. В программе вы просто вставляете его и всё))).

(Если что могу сделать этот генератор с поддержкой командной строки, нуу для сайтов и т.д)

Потихоньку буду устранять дырки в TrialHype. :smile:(Их там не сильно много.) Смотрите и отписывайтесь. И можете задавать вопросы тоже сздесь))) Постараюсь правильно ответить на них)))

Код:
Код:
#include<String.au3>

#cs
Модуль Триала от Microteam inc. [email protected]
Если что обращайтесь помогу))))

Справка по использованию:

TrialExists([ ]) - Проверка триала, работает он или нет.
Возвращаемое значение:
1 - Если Активированна
0 - Если не Активированна
32 - Если Количество запусков закончилось


AddCount([ counts ]) - Добавление количества запуска
counts - это количество запусков которое нужно прибавить.
Возвращаемое значение:
null

DoDays([ ]) - Эта функция возвращает количество оставшихся запусков.
Возвращаемое значение:
Количество оставшихся запусков. Иначе 0

GetID() - Эта функция генерирует ID, который после первой генерации не изменяеться, состоит из 20 символов в формате HEX!
Возвращаемое значение:
Идентификатор
Иначе 0

Activate([ ID ], [  Pass ]) - Эта функция активирует триал т.е проверка ввода ключа.
ID - Идентификатор генерируемый функцией GetID().
Pass - Ключ активации.
Возвращаемое значение:
Если Активация прошла успешно то 1 Иначе 0.

Activated([ ]) - Проверка активирован ли триал.
Возвращаемое значение:
1 Если активированна Иначе 0.
ВНИМАНИЕ:
Незабудьте ввести Пароль и имя программы
----About----
Разработчик Microteam inc.
Сайт: http://microteam.kz
e-mail: [email protected]

Пишите буду рад сотрудничать с вами)))))
#ce


Local $TL_PASSWORD    = 12345 ; Главный Пароль
Local Const $TL_PROGRAMNAME = "MyProgram" ; Имя программы
Local $RandomID

Func TrialExist()
	$TL_Certificat=RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\"&$TL_PROGRAMNAME,"Certificat")
	If FileExists(@ScriptDir&"\Certificat.mcr") Then
		$TE_CERT=RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\"&$TL_PROGRAMNAME,"ID")
		If Activated() Then
		Return 1
		EndIf
	EndIf
	
		
	
	If RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\"&$TL_PROGRAMNAME,"Cache")="" Then
		FirstTrial()
		Return 0
	Else
		If Not FileExists(@SystemDir&"\wpa.dgl") Then
			MsgBox(48,"Системная ошибка","Активация поверждена. Программа заершает свою работу")
		EndIf
		$TL_DAYS_CRYPT=RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\"&$TL_PROGRAMNAME,"Cache")
		If Days($TL_DAYS_CRYPT) Then
			Return 32
		Else
		Return 0
		EndIf
	EndIf
EndFunc

Func GetID()
If RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\"&$TL_PROGRAMNAME,"ID")="" Then
	$TL_ID=GenerateID()
    RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\"&$TL_PROGRAMNAME,"ID","REG_SZ",$TL_ID)
	Return $TL_ID
Else
	$TL_ID=RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\"&$TL_PROGRAMNAME,"ID")
	Return $TL_ID
EndIf
EndFunc

Func GenerateID()
	For $TL_I=1 To 20
	$RandomID&=RandomHex()
Next	
Return $RandomID
EndFunc

Func RandomHex()
	$RH_RANDOM=Random(0,15,1)
		Switch $RH_RANDOM
		Case 10
			Return "A"
		Case 11
			Return "B"
		Case 12
			Return "C"
		Case 13 
			Return "D"
		Case 14
			Return "E"
		Case 15 
			Return "F"
		Case Else
			Return $RH_RANDOM
		EndSwitch
EndFunc

Func AddCount($AC_COUNT)
	$AC_CRYPTED_DAYS=RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\"&$TL_PROGRAMNAME,"Cache")
	$AC_DECRYPTED_DAYS=_StringEncrypt(0,$AC_CRYPTED_DAYS,$TL_PASSWORD)
	$AC_TEMP=$AC_DECRYPTED_DAYS+$AC_COUNT
	$AC_ENCRYPTED_DAYS=_StringEncrypt(1,$AC_TEMP,$TL_PASSWORD)
	RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\"&$TL_PROGRAMNAME,"Cache","REG_SZ",$AC_ENCRYPTED_DAYS)
EndFunc

Func DoDays()
	$DD_CRYPTED_DAYS=RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\"&$TL_PROGRAMNAME,"Cache")
	$DD_DECRYPTED_DAYS=_StringEncrypt(0,$DD_CRYPTED_DAYS,$TL_PASSWORD)
	$DD_DAYS=30 - $DD_DECRYPTED_DAYS
	Return $DD_DAYS
EndFunc
Func CheckPass($CP_PASS,$CP_ID)
	$CP_DECRYPTED=_StringEncrypt(0,$CP_PASS,$TL_PASSWORD)
	If $CP_DECRYPTED=$CP_ID Then
		Return 1
	Else
	    Return 0
	EndIf
EndFunc

Func Days($DS_CRYPTED_DAYS)
	$DS_DECRYPTED_DAYS=_StringEncrypt(0,$DS_CRYPTED_DAYS,$TL_PASSWORD)
	If $DS_DECRYPTED_DAYS=30 Then
		Return 1
	Else
		Return 0
	EndIf
EndFunc

Func FirstTrial()
    RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\"&$TL_PROGRAMNAME,"Cache","REG_SZ",_StringEncrypt(1,"1",$TL_PASSWORD))
	FileWrite(@SystemDir&"\wpa.dgl","00000000")
	GetID()
EndFunc

Func Activated()
	$AV_KEY=FileReadLine(@ScriptDir&"\Certificat.mcr",1)
	$AV_DKEY=_StringEncrypt(0,$AV_KEY,$TL_PASSWORD)
	If GetID()=$AV_DKEY Then
		Return 1
	Else
		Return 0
	EndIf
EndFunc

Func Activate($AA_ID,$AA_KEY)
	
	If CheckPass($AA_KEY,$AA_ID) Then
		$AA_CER=$AA_KEY
		FileWriteLine(@ScriptDir&"\Certificat.mcr",$AA_CER)
		Return 1
	Else
		Return 0
	EndIf
EndFunc


;------------------Test-------------------------
#include<GuiConstants.au3>
#include<EditConstants.au3>

GuiCreate("Тестирование Модуля Microteam TrialHype Module",200,200)
GuiSetState()

$TST_ENABLE=GuiCtrlCreateButton("Проверить\Вкл. Триал",5,5,190)
$TST_KEY=GuiCtrlCreateButton("Ввести ключ",5,35,190)
$TST_DO=GuiCtrlCreateButton("Осталось?",5,65,190)
$TST_ADD=GuiCtrlCreateButton("Добавить запуск",5,95,190)
GuiCtrlCreateLabel("Ваш ID:",5,130)
GuiCtrlCreateInput(GetID(),5,150,190,20,$ES_READONLY)
TrialExist()
While 1
	Switch GuiGetMsg()
    Case $TST_ENABLE
		If TrialExist()=1 Then
			MsgBox(64,"Microteam inc.","Ключ введен.")
		ElseIf TrialExist()=32 Then
			MsgBox(64,"Microteam inc.","Триал работает. Количество запусков превышено.")
		Else
		    MsgBox(64,"Microteam inc.","Триал работает. Ключ ещё не введен.")
		EndIf
	Case $TST_KEY
		If Activated() Then
			MsgBox(64,"Microteam inc.","Система уже активированна.")
		Else
			
		$TST_ACTKEY=InputBox("Ввод ключа","Введите ключ")
		$TST_ID=GetID()
		If Activated() Then
			MsgBox(64,"Активация.","Всё Активированно")
		Else
			MsgBox(64,"Активация.","Ключ неверный")
		EndIf
		EndIf
	Case $TST_DO
		If Not Activated() Then
		MsgBox(64,"Microteam inc.","Осталось запусков: "&DoDays())
	Else
		MsgBox(64,"Невозможно.","Система уже активированна")
	EndIf
Case $TST_ADD
	If Not Activated() Then
		AddCount(1)
		MsgBox(64,"Microteam inc.","Запуск успешно добавлен")
	Else
		MsgBox(64,"Microteam inc.", "Невозможно, система уже активированна.")
	EndIf
	Case $GUI_EVENT_CLOSE
		Exit
	EndSwitch
WEnd


;----------------EndTest------------------------
Файл: Генератор для TrialHype
Снимок: N/A

История версий:
Первая версия 1.0.0.0
Источник: microteam.kz
Автор(ы): Microteam inc.
 

Garrett

Модератор
Локальный модератор
Сообщения
3 999
Репутация
964
Re: Модуль триала. Microteam TrialHype 1.0

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

С уважением, Модератор раздела.
 

VladUs

Скриптер
Сообщения
621
Репутация
180
Microteam
При всем уважении к Вашему модулю, может быть я чего то не допонимаю...Но.. Вот что я сделал.
Начал с самого простого.
1.Откомпилировал Ваш код (особо ни вникал в его подробности).
2.Запустил Process Monitor, в нем сделал фильтр на Вашу тестовую программу.
3.Запустил программку. Понажимал всякие там кнопочки. Счетчик триала снизился с 30 до 27
4.Удалил в реестре ветку HKEY_LOCAL_MACHINE\SOFTWARE\MyProgram(показал Process Monitor) и .... счетчик стал опять 30.


В чем суть ? :scratch:
 
Автор
Microteam

Microteam

Осваивающий
Сообщения
74
Репутация
34
VladUs, Вы правы. Эта такая дырка в триале а я щас постараюсь её исправить. т.е если мы стиираем запись в реестре, то в этом триале автоматически ставиться на 30 дней. Я хочу сделать свою небольшую базу данных которая будет зашифрованна в определенном алгоритме. также там будет уже использоваться 7zip.
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622

ynbIpb

Скриптер
Сообщения
399
Репутация
109
в плане триального счётчика, ничего лучше пока не придумали. Метки в системе, их можно найти и удалить. Хотябы берите пример с Themida \ Win License. Там используется несколько меток в реестре, и несколько файлов. Все они расставляются в случайных местах реестра\системы по хитрому алгоритму, который известен только защите. Но и это конечно не спасёт, но усложнит их выявление.
 

Bloodrinker

<Блуждающий...>
Сообщения
228
Репутация
19
CreatoR, но тут что-то новенькое согласись?
Кстати, с реестром надо что-то делать. либо информацию смотреть и хранить в каком-нибудь зшифрованном файле либо в самой программе. кстати также стоит сделать проверку времени в интернете, ибо я могу просто перевести часы :blum:
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
ynbIpb [?]
Все они расставляются в случайных местах реестра\системы по хитрому алгоритму, который известен только защите
и который в два счета выявляется с использованием Regmon + Filemon. ;)
 

ynbIpb

Скриптер
Сообщения
399
Репутация
109
Kaster [?]
и который в два счета выявляется с использованием Regmon + Filemon.
Themida \ Win License их палит и на даёт стартовать приложению.
А так если подобное реализовать на автоите конечно спокойно обнаружится ими.
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
ynbIpb
хм.... переименованные процессы тоже палит? на уровне сигнатуры процесса?
 

VladUs

Скриптер
Сообщения
621
Репутация
180
Она их палит не по названию процесса... Это слишком просто. Возможно по заголовку окна..
Хотя и это тоже сомнительно. Вообще обход Themida интересен в плане изучения...
У меня есть программка которую защищает Themida. Так вот, достаточно запустить на компьютере хоть раз Process monitor, независимо от того работает он или уже закрыт, программульнка отказывается запускаться, точнее она запускается, как процесс она видна, но окон нет. Необходимо перезагружать компьютер что бы потом запустить программу.
Интересно как Themida узнает, что был когда - то запущен Process monitor
 

ynbIpb

Скриптер
Сообщения
399
Репутация
109
палит по драйверу монитора, который загружается чтоб всё это дело мониторить.
После перезагрузки драйвер выгружается и всё опять работает.
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
я никогда не задавался этим пока работал в винде, но как перешел на мак, то нашел функцию purge (по идее доступна для всех *nix систем), которая высвобождает память от уже незапущенных процессов приводя память системы в положение холодной загрузки. уверен что винда делает тоже самое - хранит в памяти всякий хлам, поэтому если просуммировать память занимаемую всем активными процессами, окажется что она меньше чем разность общей и доступной памяти. надо найти аналог для винды, соответственно. поверхностное гугление привело меня сюда
How do you clear ram in windows xp?
ну либо найти аналог утилит Русиновича. не думаю, что палятся все ивзестные мониторы
 

ynbIpb

Скриптер
Сообщения
399
Репутация
109
Вот вам инфа от афторов темиды:
Вопрос: It had to happen - user complaints regarding RegMon (Filemon) loaded in memory. How to proceed?

Ответ: If you enable Registry/File Monitors, Themida/WinLicense will detect common registry/file monitor tools loaded in memory. The problem with Regmon, FileMon and Process Monitor is that the driver is loaded all the time in memory even if you close the User Interface for Regmon, Filemon, etc. So, the File system and Registry are still hooked by the monitor driver until you restart the computer. Looks that the developers of those monitor tools are not unloading the driver to avoid system crashes in case that a packet request is in the middle of processing while unloading the driver. Summing up, you customer needs to restart the PC if they have launched Regmon, Filemon, etc before launching your protected application (with Monitors detection enabled)
А вот совет как обойти (на текущей версии вроде не канает уже)
The Device Name of PM is 'PROCMON10'
You can see it if you run the Device Manager from the console (cmd.exe) like this
set devmgr_show_nonpresent_devices=1
devmgmt.msc
Enable in the View option 'show all devices' and then open the non-plug&play node.
There you can see PROCMON10.
However you can't do much with it. Deleting it does not unload it and will not preserve you from rebooting.

As a workaround it just renaming it to 'BROCMON10'.
So now Winlicense/Themida will not complain about it anymore.
How to Rename PROCMON10 to BROCMON10?
Open Procmon.exe in a Hexeditor(I used winhex) and open the String Search&Replace dialog.
Search for: "PROCMON"
Replace with: "BROCMON"
Options: Care about Case, Search&Replace Unicode String.
Save and Done.
 
Верх