Добавляете ряд проверок.
Их может быть миллион.
Простая защита по 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
}
Всё это проходим обфускатором и наши переменные и функции становятся непонятными для того, кто взломал и он не будет понимать, что где и как связывается.
В общем.. доставляем максимальный дискомфорт тому, кто захочет взломать.