1

Тема: AHK: Как заблокировать выполнение скрипта на других компьютерах?

Хочу запретить распространение моих скриптов среди сотрудников без моего ведома. Т.е. как сделать так, чтобы, если вдруг мой скрипт скопируют на другой компьютер, без моего первичного вмешательства в код, он не работал?
Это возможно?

2

Re: AHK: Как заблокировать выполнение скрипта на других компьютерах?

Самый простой способ — проверить серийный номер какого-либо диска командой DriveGet.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3

Re: AHK: Как заблокировать выполнение скрипта на других компьютерах?

Можно написать простенькую прогу, которая будет добавлять например в реестр некую запись. Затем ваш скрипт считывает её и запускается. Естественно саму программу затем сразу удалить (или запускать с флешки).

Win10x64, AHK v1.1.33.09 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

4

Re: AHK: Как заблокировать выполнение скрипта на других компьютерах?

От продвинутых сотрудников не спастись. А что, скрипт оказался очень востребованным?

5

Re: AHK: Как заблокировать выполнение скрипта на других компьютерах?

teadrinker Почему-то не читает серийник когда задаю диск явно:


	DriveGet, DriveNumber, serial, C:\
	MsgBox, %DriveNumber%

А вот если выбирать диск руками, а не задавать - то все ок:


	FileSelectFolder, folder, , 3, Выберите диск для анализа:
	if folder = 
		return
	DriveGet, DriveNumber, serial, %folder%
	MsgBox, %DriveNumber%

Подскажите пожалуйста, почему так?

6

Re: AHK: Как заблокировать выполнение скрипта на других компьютерах?

__Михаил__ спасибо, но реестр рабочих компов боюсь трогать. Лучше что-нибудь по-проще.

7 (изменено: pavel.garshin.01, 2022-06-22 22:56:07)

Re: AHK: Как заблокировать выполнение скрипта на других компьютерах?

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

8

Re: AHK: Как заблокировать выполнение скрипта на других компьютерах?

Если реестр нельзя, то обычный файл можно использовать.

Win10x64, AHK v1.1.33.09 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

9 (изменено: pavel.garshin.01, 2022-06-22 23:06:20)

Re: AHK: Как заблокировать выполнение скрипта на других компьютерах?

__Михаил__, ага, я тоже об этом подумал. Буду сверять серийник диска с записью в ini-файле. Отправлять сотруднику буду пустой ini. А уже у него на месте запишу в ini серийник диска.
Однако прочитать серийник у меня до сих пор не получается. Не знаете в чем причина?

10

Re: AHK: Как заблокировать выполнение скрипта на других компьютерах?

pavel.garshin.01 пишет:

Подскажите пожалуйста, почему так?

Не знаю, у меня первый код, который вы запостили, работает правильно.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

11

Re: AHK: Как заблокировать выполнение скрипта на других компьютерах?

teadrinker виноват. Теперь все работает.
Испытывал в старом скрипте, где полно всякого кода - не работало. Видно конфликтовало с чем-то.
Записал в новый скрипт - работает.

12

Re: AHK: Как заблокировать выполнение скрипта на других компьютерах?

Вообще-то в реестре всё просто. Есть системные разделы, которые лучше не трогать. И есть пользовательские разделы, в которых можно создавать свои подразделы и сохранять в них любую информацию.

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

13 (изменено: pavel.garshin.01, 2022-06-22 23:39:18)

Re: AHK: Как заблокировать выполнение скрипта на других компьютерах?

ypppu, т.е. получается в скрипте делаю проверку пароля с сохранением его в реестр. А в следующие разы при включении скрипта будет автозаполнение пароля из реестра? Так, что ли?
Что-то не то. Я не так понял. Может вы имеете ввиду: в скрипте сделать сверку с паролем из реестра, который первоначально нужно туда внести вручную. Так правильней?

14

Re: AHK: Как заблокировать выполнение скрипта на других компьютерах?

Скрипт сам при каждом запуске делает проверку. Если пароль однажды был введён, то скрипт сразу начинает работать. Если ни разу не вводился, скрипт предлагает ввести пароль.

15

Re: AHK: Как заблокировать выполнение скрипта на других компьютерах?

ypppu вроде бы понял. Но как реализовать - пока сложновато для меня. Буду гуглить

16

Re: AHK: Как заблокировать выполнение скрипта на других компьютерах?

ypppu пишет:

Если ни разу не вводился, скрипт предлагает ввести пароль.

У всех входящих он строго требовал пропуск, но если ему пропуска не давали, то он пускал и так.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

17

Re: AHK: Как заблокировать выполнение скрипта на других компьютерах?

  • Вообщем вариант с ini-файлом мне не понравился, т.к. он слишком легко открывается. Открывается как любой текстовый файл -  двумя щелчками. Я не ожидал такого - поэтому забраковал этот вариант.

  • Сделал то же самое, только с dat-файлом. И все было хорошо, но уж слишком подозрительно когда рядом с файлом-скриптом находится какой непонятный файл непонятного расширения. Так и хочется его открыть блокнотом. Эхх, поэтому этот вариант тоже отпал.

  • Вариант с реестром мне понравился, но пока не реализовал. Да и я все еще не уверен, можно ли так смело использовать реестр на раб. компьютере.

Пока что буду использовать самый простой и самый надежный на данным момент вариант, который не будет вызывать подозрений:


	DriveGet, DriveNumber, serial, C:\
	;MsgBox, %DriveNumber%
	
	if(DriveNumber . "" == "137449007")
	{
		;выполняем скрипт
	}

На каждой новой машине буду читать через MsgBox серийник и изменять значение в проверке.
Всем спасибо за советы.

18

Re: AHK: Как заблокировать выполнение скрипта на других компьютерах?

Только все кавычки в данном случае лишние.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

19

Re: AHK: Как заблокировать выполнение скрипта на других компьютерах?

teadrinker пишет:
ypppu пишет:

Если ни разу не вводился, скрипт предлагает ввести пароль.

У всех входящих он строго требовал пропуск, но если ему пропуска не давали, то он пускал и так.

Где смеяться? Скрипт не будет работать, если пользователь введёт неправильный пароль. А если правильный пароль уже был введён, скрипт увидит это в реестре и заработает без запроса пароля.

20

Re: AHK: Как заблокировать выполнение скрипта на других компьютерах?

Возможно, я не постиг всю глубину замысла. А чем это лучше сверки серийника диска?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

21

Re: AHK: Как заблокировать выполнение скрипта на других компьютерах?

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

Все остальные уловки бесполезны. Любой продвинутый пользователь спишет с памяти весь код и сделает с ним что захочет. Не только для себя сломает, но и другим раздаст.

22

Re: AHK: Как заблокировать выполнение скрипта на других компьютерах?

teadrinker, это один из вариантов. Он не лучше и не хуже.

23

Re: AHK: Как заблокировать выполнение скрипта на других компьютерах?

Он явно сложнее, но при этом не даёт никаких преимуществ. Соответственно, он объективно хуже.
Next, думаю, здесь не тот случай.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

24

Re: AHK: Как заблокировать выполнение скрипта на других компьютерах?

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

25

Re: AHK: Как заблокировать выполнение скрипта на других компьютерах?

andrey.a.polyakov.b2c пишет:

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

Могу помочь с реализацией если сами не сможете.

26 (изменено: Foma, 2022-07-04 20:43:26)

Re: AHK: Как заблокировать выполнение скрипта на других компьютерах?

pavel.garshin.01 пишет:

Однако прочитать серийник у меня до сих пор не получается. Не знаете в чем причина?

Самый очевидный ответ - антивирус блокирует именно это действие.

У меня точно именно так было.

27

Re: AHK: Как заблокировать выполнение скрипта на других компьютерах?

andrey.a.polyakov.b2c, только в чем смысл если можно через host перенаправить на свой сайт и вернуть там то, что нужно.

Win10: LTSC (v1809); AHK: ANSI (v1.1.34.03)

28

Re: AHK: Как заблокировать выполнение скрипта на других компьютерах?

Phoenixxx_Czar Можно, но только нужно знать что вернуть. а так как ключи будут зашифрованы туда и обратно то определить будет сложнее.

29

Re: AHK: Как заблокировать выполнение скрипта на других компьютерах?

Phoenixxx_Czar, хотите в качестве эксперимента напишу скрипт, а вы попробуете таким способом обойти защиту. Я не говорю конечно что сломать такое не реально. Как ни как это ahk, но тем не менее сломать будет сложновато.

30 (изменено: Clannad5, 2022-07-13 11:09:14)

Re: AHK: Как заблокировать выполнение скрипта на других компьютерах?

Добавляете ряд проверок.
Их может быть миллион.

Простая защита по Pastebin.
Смысл довольно прост..
Создаем на пастбине файл и помещаем туда On или Off
Пишем код с проверкой по этому файлу в интернете:


gaycheck("https://pastebin.com/raw/адрес", "On")
gaycheck(link, word)    {
oWhr := ComObjCreate("WinHttp.WinHttpRequest.5.1")
oWhr.Open("GET", link, false)
oWhr.Send()
if (oWhr.ResponseText != word)    {
TrayTip, Trojan.Win32, Доступ заблокирован, 1
ExitApp
}
}

Информация может быть любая, к примеру id вашего  оборудования.
Чтобы сильнее укрепить защиту, вы можете взять несколько id ваших оборудований, зашифровать их по MD5 и уже эти данные передавать на пастбин.

Так же, чтобы код ваш не был прочитан в блокноте, достаточно воспользоваться AHK Protector, его вы можете найти в Google.
Сразу предупреждаю, что иногда AHK Protector может сломать ваш код, поэтому проверяйте его работоспособность до компиляции и после, этим способом.

Эту защиту можно взломать, путем подделывания файла Host, но можно так же устранить подделывание, путём проверки не только по сети, но так же и локально и если локальные данные не схожи, то мы никогда не обратимся по адресу PasteBin, соответственно взломщик никогда не узнает, что нужно подделать host, какие значения поставить в оборудование, чтобы при шифрование данных получился именно тот MD5 который был.

Как-то так.

Так же можно еще запутать код обфускацией.
Сделать переменную не одним целым, а построчным, что-то типа такого:


A1 = Msh
код
код
код
код
A3 := A1"Iurh4"
код
код
код
A4 = Iorhu
код
код
MD5 := func(A3, A4)
..
...


в конце кода скрипта
func(A3, A4)
{
A2 := A3 A4 
}

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

31

Re: AHK: Как заблокировать выполнение скрипта на других компьютерах?

Сделай проверку по имени пользователя, легко и быстро, скрипт буквально в 5 строчек.