AHK скрипт Гайд Способы привязки AHK скрипта к человеку (05.10.2021)

Пригодилось?


  • Всего проголосовало
    34
Пользователь
Статус
Оффлайн
Регистрация
30 Апр 2019
Сообщения
141
Реакции[?]
33
Поинты[?]
4K
Всем привет! В этом посте я научу Вас привязывать свой софт к железу пользователя.
Обновлено (05.10.2021)

- Исправил серьезную ошибку с нахождением операционки на других системных дисках помимо диска C:\

Первый способ:

1) Будем доставать серийник диска на котором установлена Windows.
2) Регистрируемся на GitHub (no ad) и создаем свой GitHub Pages (no ad).
3) Вносим серийник человека в свою базу.
4) После запуска скрипта, скачивается страница вашей базы человеку, после чего ahk ищет совместимость серийника.
5) Если нашелся подходящий серийник, скрипт пропускает в главный функционал, если нет, требует авторизоваться.

Код:
#NoEnv

Windows_Disk := A_WinDir

if Windows_Disk contains Windows
{
    RegExMatch(Windows_Disk, "(.*)windows", Disk_7)
    if Disk_71 contains Q,W,E,R,T,Y,U,I,O,P,A,S,D,F,G,H,J,K,L,Z,X,C,V,B,N,M
    {
        DriveGet, HWID, Serial, %Disk_71%
    }
      
    RegExMatch(Windows_Disk, "(.*)Windows", Disk_8)
    if Disk_81 contains Q,W,E,R,T,Y,U,I,O,P,A,S,D,F,G,H,J,K,L,Z,X,C,V,B,N,M
    {
        DriveGet, HWID, Serial, %Disk_81%
    }
      
    RegExMatch(Windows_Disk, "(.*)WINDOWS", Disk_10)
    if Disk_101 contains Q,W,E,R,T,Y,U,I,O,P,A,S,D,F,G,H,J,K,L,Z,X,C,V,B,N,M
    {
        DriveGet, HWID, Serial, %Disk_101%
    }
}
else
{
    MsgBox, У тебя операционная система не Windows!
    ExitApp
}
Результат A_WinDir выглядит примерно так - C:\WINDOWS
Для того чтобы не возникало проблем с использование буквой диска, нужно убрать лишние буквы, в нашем случае это - WINDOWS.
По этому я использовал функцию RegExMatch, а вот результатом выступает Disk_7, Disk_8, Disk_10 в которых хранится диск с Windows в моем случае C:\
А вот сама DriveGet достает серийник из Disk1
(обратите внимание не Disk_7, а Disk_71), результат хранится в HWID (переменная).

Код:
URLDownloadToFile, ВАША БАЗА, %a_temp%/key.txt
fileread, read, %a_temp%/key.txt
FileDelete, %a_temp%/key.txt
if read contains %HWID%
{
    Goto, true
}
else
{
    MsgBox, Добро пожаловать в поле регистрации!`nСкопированные данные отправьте автору программы.
    Gui, Font, S16 CBlack Bold, Arial
    Gui, Add, Text, x53 y0 w500 h30 , Твой ключ:
    Gui, Font, ,
    Gui, Add, Edit, x1 y31 w219 h21 +Center ReadOnly vEdit,
    Gui, Add, Button, x35 y52 w153 h24 gClip , Копировать и закрыть
    Gui, Show, w221 h76, Доступ
    GuiControl, , Edit, % HWID
    return
    Clip:
    Gui, Submit, NoHide
    Clipboard := Edit
    ExitApp
    GuiClose:
    ExitApp
}
true:
MsgBox, Добро пожаловать!
URLDownloadToFile качает страницу с сайта в папку Temp хранящуюся на диске C (в моем случае), после чего скрипт читает все содержимое, а по завершению удаляет файл. Учтите, что ссылку на вашу базу нужно вставлять вместо - ВАША БАЗА.

Порядок действий:

1) 1631736105316.png
2) 1631736172474.png
3) Ссылку копируем обязательно в таком формате, как показано на скрине!1631736415897.png
4) Вставляем в код, готово!

После того как скрипт прочёл содержимое - HWID, происходит сравнение текущего серийника пользователя с существующей базой. Если есть сходство, программа пропускает человека (срабатывает функция Goto, он в свою очередь пропускает строки связанные с меню авторизации, скрипт стартует со строчки true:)

Весь код первого способа:

Код:
#NoEnv

Windows_Disk := A_WinDir

if Windows_Disk contains Windows
{
    RegExMatch(Windows_Disk, "(.*)windows", Disk_7)
    if Disk_71 contains Q,W,E,R,T,Y,U,I,O,P,A,S,D,F,G,H,J,K,L,Z,X,C,V,B,N,M
    {
        DriveGet, HWID, Serial, %Disk_71%
    }
      
    RegExMatch(Windows_Disk, "(.*)Windows", Disk_8)
    if Disk_81 contains Q,W,E,R,T,Y,U,I,O,P,A,S,D,F,G,H,J,K,L,Z,X,C,V,B,N,M
    {
        DriveGet, HWID, Serial, %Disk_81%
    }
      
    RegExMatch(Windows_Disk, "(.*)WINDOWS", Disk_10)
    if Disk_101 contains Q,W,E,R,T,Y,U,I,O,P,A,S,D,F,G,H,J,K,L,Z,X,C,V,B,N,M
    {
        DriveGet, HWID, Serial, %Disk_101%
    }
}
else
{
    MsgBox, У тебя операционная система не Windows!
    ExitApp
}

URLDownloadToFile, https://raw.githubusercontent.com/millioner1403/index.html/master/index.html, %a_temp%/key.txt
fileread, read, %a_temp%/key.txt
FileDelete, %a_temp%/key.txt

if read contains %HWID%
{
    Goto, true
}
else
{
    MsgBox, Добро пожаловать в поле регистрации!`nСкопированые данные отправте автору программы.
    Gui, Font, S16 CBlack Bold, Arial
    Gui, Add, Text, x53 y0 w500 h30 , Твой ключ:
    Gui, Font, ,
    Gui, Add, Edit, x1 y31 w219 h21 +Center ReadOnly vEdit,
    Gui, Add, Button, x35 y52 w153 h24 gClip , Копировать и закрыть
    Gui, Show, w221 h76, Доступ
    GuiControl, , Edit, % HWID
    return
    Clip:
    Gui, Submit, NoHide
    Clipboard := Edit
    ExitApp
    GuiClose:
    ExitApp
}
true:
MsgBox, Добро пожаловать!
Второй способ:

Этот способ работает по принципу парсинга страницы, идея - Bunnyscript ( https://yougame.biz/members/337981/ ).

1) Будем доставать серийник диска на котором установлена Windows.
2) Регистрируемся на GitHub (no ad) и создаем свой GitHub Pages (no ad).
3) Вносим серийник человека в свою базу.
4) После запуска скрипта, парсится страница вашей базы, после чего ahk ищет совместимость серийника.
5) Если нашелся подходящий серийник, скрипт пропускает в главный функционал, если нет, требует авторизоваться.

Код этого способа на 90% схож с предыдущим, по этому в детальном объяснении не нуждается.

Весь код второго способа:

Код:
#NoEnv

Windows_Disk := A_WinDir

if Windows_Disk contains Windows
{
    RegExMatch(Windows_Disk, "(.*)windows", Disk_7)
    if Disk_71 contains Q,W,E,R,T,Y,U,I,O,P,A,S,D,F,G,H,J,K,L,Z,X,C,V,B,N,M
    {
        DriveGet, HWID, Serial, %Disk_71%
    }
       
    RegExMatch(Windows_Disk, "(.*)Windows", Disk_8)
    if Disk_81 contains Q,W,E,R,T,Y,U,I,O,P,A,S,D,F,G,H,J,K,L,Z,X,C,V,B,N,M
    {
        DriveGet, HWID, Serial, %Disk_81%
    }
       
    RegExMatch(Windows_Disk, "(.*)WINDOWS", Disk_10)
    if Disk_101 contains Q,W,E,R,T,Y,U,I,O,P,A,S,D,F,G,H,J,K,L,Z,X,C,V,B,N,M
    {
        DriveGet, HWID, Serial, %Disk_101%
    }
}
else
{
    MsgBox, У тебя операционная система не Windows!
    ExitApp
}

Parse := ComObjCreate("WinHttp.WinHttpRequest.5.1")
Parse.Open("GET", "https://raw.githubusercontent.com/millioner1403/index.html/master/index.html", false)
Parse.Send()
Parse.WaitForResponse()
Text := Parse.ResponseText

if Text contains %HWID%
{
    Goto, true
}
else
{
    MsgBox, Добро пожаловать в поле регистрации!`nСкопированые данные отправте автору программы.
    Gui, Font, S16 CBlack Bold, Arial
    Gui, Add, Text, x53 y0 w500 h30 , Твой ключ:
    Gui, Font, ,
    Gui, Add, Edit, x1 y31 w219 h21 +Center ReadOnly vEdit,
    Gui, Add, Button, x35 y52 w153 h24 gClip , Копировать и закрыть
    Gui, Show, w221 h76, Доступ
    GuiControl, , Edit, % HWID
    return
    Clip:
    Gui, Submit, NoHide
    Clipboard := Edit
    ExitApp
    GuiClose:
    ExitApp
}
true:
MsgBox, Добро пожаловать!
Ребят, надеюсь Вам пригодились мои знания. Напоминаю, что я не являюсь программистом, занимаюсь этим делом ради удовольствия. В даном посте я использовал свой метод получения серийного номера диска (кроме GUI (меню) ), я считаю что это довольно простой способ и в тоже время надежный, ибо он состоит из 10 символов, а не из 20. Хочу поблагодарить Bunnyscript за решенную проблему с парсингом страницы. Скачивать файл, а потом удалять не совсем правильно. По этому рекомендую использовать второй способ! Пишите как Вам, делитесь своими знаниями в комментариях, давайте поможем друг другу ибо инноваторов становится всё меньше. Если Вас ещё что-то интересует (не по теме) пишите, попробую помочь чем смогу в следующих постах.

Также прошу обратить внимание, на то, как AutoHotKey прост в освоении, например я получил серийный номер диска всего 3-мя строчками кода. На других языках я ещё такого не встречал)).
 
Последнее редактирование:
fuck gamesense.is all my homies use otcv2
Начинающий
Статус
Оффлайн
Регистрация
11 Янв 2019
Сообщения
60
Реакции[?]
10
Поинты[?]
5K
не самая лучшая защита. но вроде сойдёт
 
Пользователь
Статус
Оффлайн
Регистрация
30 Апр 2019
Сообщения
141
Реакции[?]
33
Поинты[?]
4K
достаточно заменить ответ и твой ахк будет взломан (или декомпилировать лол)
Я писал о надежности способа. Если человек в силах взломать ahk, он разве не может сделать подобный функционал самостоятельно? Также нужно не забывать о протекции кода, полиморфизме, обфускации и прочих методов защиты. Если все сделать качественно, никому не будет делала до твоего скрипта, ибо проще будет просто воссоздать свой с нуля. Ппхуды, вантапы и подобные софтины сделать на ahk попросту невозможно. Даже скорость external чита написанном на нём очень низка, для этого есть более продвинутые языки.
 
Забаненный
Статус
Оффлайн
Регистрация
9 Фев 2021
Сообщения
181
Реакции[?]
97
Поинты[?]
1K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Есть разные компиляторы для AHK. Есть куча разных приватных компиляторов которые не могут взломать даже опытные кодеры. Не говоря уже о тех кто покупает скрипты для личного пользования. И вообще не шарит за кодинг. Защита нужна лиж для того что ты скрипт не распостраняли на различных пабликах, либо школо серверах.
 
vk.com/ahkcsgocheat
Пользователь
Статус
Оффлайн
Регистрация
21 Апр 2020
Сообщения
379
Реакции[?]
64
Поинты[?]
2K
А как ключ вносить в базу, вручную?
 
Последнее редактирование:
Пользователь
Статус
Оффлайн
Регистрация
30 Апр 2019
Сообщения
141
Реакции[?]
33
Поинты[?]
4K
А как ключ вносить в базу, вручную?
К сожалению, но да. Человек качает скрипт, запускает, программа просит его отправить ключ автору скрипта. Ты в свою очередь вручную добавляешь себе в базу. Но если использовать платные хостинги, а не тот о котором я написал, можно сделать так, чтобы программа сама общалась с базой. Но я считаю, что это не безопасно, например если ломанут твой софт и получат доступ к базе, могут просто всех твоих юзеров от туда удалить. Я попробую что-то еще придумать, так сказать, как можно сильнее автоматизировать этот метод. Ну а на счет того, что человек может получить список все юзеров твоей базы, можно даже не беспокоиться. HWID если я не ошибаюсь выглядит примерно так: 00000-00000-00000-00000, в таком виде человек может подменить свой на тот, что в базе. Но AHK видит HWID в своем формате: 0000000000. Человек даже не сможет понять как этот формат конвертировать в стандартный. Но даже если совсем стремно, можно создать самый обычный шифратор или подменщик, в таком случае это будет наверное самый лучший способ привязки человека к базе. Ну и как я писал ранее, нужно подумать о парсинге страницы, а не о скачивании файла страницы?
 
vk.com/ahkcsgocheat
Пользователь
Статус
Оффлайн
Регистрация
21 Апр 2020
Сообщения
379
Реакции[?]
64
Поинты[?]
2K
Вообще я знаю прогу, где человек в гугл таблицу заносит данные. У него такая система активации, все автоматически заносится (привязывается, только ключ нужно указывать (покупать) у него на сайте). Он прогу (скрипт) свой зашифровал, но в отладчике можно прочитать код, в чит Энджин, например, если кто хоть немного разбирается в Http запросах, то может восстановить эту систему сам. Опять же, мне не нужно.
 
Последнее редактирование:
Пользователь
Статус
Оффлайн
Регистрация
30 Апр 2019
Сообщения
141
Реакции[?]
33
Поинты[?]
4K
Вообще я знаю прогу, где человек в гугл таблицу заносит данные. У него такая система активации, все автоматически заноситься (привязывается, только ключ нужно указывать (покупать) у него на сайте). Он прогу (скрипт) свою зашифровал, но в отладчике можно прочитать код, в чит Энджин, например, если кто хоть немного разбирается в Http запросах, то может восстановить эту систему сам. Опять же, мне не нужно.
По мере поступления новой информации, я буду дополнять этот пост, все же в название темы слово - способы)
 
Жизнь быстротечна — спешите стать Человеком!
Пользователь
Статус
Оффлайн
Регистрация
12 Апр 2021
Сообщения
256
Реакции[?]
36
Поинты[?]
0
Последнее редактирование:
Пользователь
Статус
Оффлайн
Регистрация
30 Апр 2019
Сообщения
141
Реакции[?]
33
Поинты[?]
4K
Жизнь быстротечна — спешите стать Человеком!
Пользователь
Статус
Оффлайн
Регистрация
12 Апр 2021
Сообщения
256
Реакции[?]
36
Поинты[?]
0
Скорее всего ты по ошибке скопировал вторую часть кода. Пролистай в конец моего поста, там будет весь код программы.
я копировал весь код, и вставил вместо твоей ссылки свою
 
Пользователь
Статус
Оффлайн
Регистрация
30 Апр 2019
Сообщения
141
Реакции[?]
33
Поинты[?]
4K
я копировал весь код, и вставил вместо твоей ссылки свою
я копировал весь код, и вставил вместо твоей ссылки свою
Смотри, этот код, что я тебе сейчас скинул запусти, а результат заскринь и скинь сюда.
Код:
Код:
#NoEnv
Windows_Disk := A_WinDir
RegExMatch(Windows_Disk, "(.*)WINDOWS", Disk)
DriveGet, HWID, Serial, %Disk1%

MsgBox, Твой диск с виндой: %Windows_Disk%`nДиск: %Disk1%`nКлюч диска: %HWID%
Пример скрина:
1631965382652.png
 
Пользователь
Статус
Оффлайн
Регистрация
30 Апр 2019
Сообщения
141
Реакции[?]
33
Поинты[?]
4K
У тебя какой Windows? Я смотрю у тебя сама система прописана не капсом. У меня есть возможность проверить работоспособность на 7, 8.1 и 10. На 7 и 10 все хорошо работает.

В любом случае по приезду домой пофикшу (надеюсь).
 
Жизнь быстротечна — спешите стать Человеком!
Пользователь
Статус
Оффлайн
Регистрация
12 Апр 2021
Сообщения
256
Реакции[?]
36
Поинты[?]
0
о
Ключ теперь выдает1632026761330.png
Так теперь у меня другая проблема, У меня есть 10 ботов, которые надо соединить в 1 ахк лаунчер.
Чтобы ты открыл его, скинул код другу, он дал доступ. Я захожу и вижу 10 вкладок, по каждой тыкнуть можно, тыкаешь на 1, запускается она и тд
 
Последнее редактирование:
Пользователь
Статус
Оффлайн
Регистрация
30 Апр 2019
Сообщения
141
Реакции[?]
33
Поинты[?]
4K
о
Ключ теперь выдаетПосмотреть вложение 172415
Так теперь у меня другая проблема, У меня есть 10 ботов, которые надо соединить в 1 ахк лаунчер.
Чтобы ты открыл его, скинул код другу, он дал доступ. Я захожу и вижу 10 вкладок, по каждой тыкнуть можно, тыкаешь на 1, запускается она и тд
Немного не понял проблему.
Я так понимаю, ты админ всего софта, у тебя есть 10 AHK скриптов которые должны запускаться по отдельности с AHK лаунчера.

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

После того как он получил доступ к ботам, у него появляется меню (GUI) где он может выбрать одного из 10 ботов в любое время.

Еще один вопрос, если он выбрал сразу 10 ботов, они все сразу должны запустится или можно за один сеанс только одного бота?

И кстати, я вижу ты создал свою тему с вопросом, я тебе туда если что скину готовый код чтобы не засорять эту.
Если у кого-то похожая проблема залетайте сюда:
 
Жизнь быстротечна — спешите стать Человеком!
Пользователь
Статус
Оффлайн
Регистрация
12 Апр 2021
Сообщения
256
Реакции[?]
36
Поинты[?]
0
Немного не понял проблему.
Я так понимаю, ты админ всего софта, у тебя есть 10 AHK скриптов которые должны запускаться по отдельности с AHK лаунчера.

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

После того как он получил доступ к ботам, у него появляется меню (GUI) где он может выбрать одного из 10 ботов в любое время.

Еще один вопрос, если он выбрал сразу 10 ботов, они все сразу должны запустится или можно за один сеанс только одного бота?

И кстати, я вижу ты создал свою тему с вопросом, я тебе туда если что скину готовый код чтобы не засорять эту.
Если у кого-то похожая проблема залетайте сюда:
Прямо в точку.
Типа да гуи меню(лаунчер1632057739017.pngТипа такого))))) хахахаха. и ты тыкаешь на 1, а там тот скрипт, закрываешь его, открываешь заного и если хочешь другое, выбираешь другой скрипт) ну ты меня понял, сам все сверху написал. Надо чтобы он только 1 бота мог выбрать за сеанс.
А вместо цифарок я свои названия вставлю
 
Сверху Снизу