1 (изменено: baplo, 2018-07-07 17:55:43)

Тема: AHK: Проверка защиты скрипта.

Здравствуйте!
Недавно нашел один способ, защитить код скрипта, это не обфускация, сразу говорю.
ссылка на файл https://drive.google.com/open?id=1KXc4I … ADeuP6Mbpx

Что делает макрос:
Создал я тестовый макрос, он тупо, при нажатие на F11, прибавляет значения переменных и выводит в простой MSgbox.

Хотелось бы узнать, насколько макрос хорошо компилирован в .Exe, но сам я не владею знаниями декомпиляции.

Если кто сможет помочь, откликнитесь, пожалуйста!

P.S Я не знаю, можно ли на этом форуме просить подобное, но я не нашел подходящего раздела для этого, поэтому написал тут, извините.

Кто сможет декомпилировать код и выложить его сюда?

Люблю когда мне понижают репутацию (мне правда все равно)

2

Re: AHK: Проверка защиты скрипта.

Ну, этот способ давно известен, компиляция в AutoHotkey_H. Зачем эта таинственность?

3 (изменено: baplo, 2018-06-20 15:57:13)

Re: AHK: Проверка защиты скрипта.

Этот макрос возможно взломать или нет, и я могу спать спокойно?Спасибо.

Люблю когда мне понижают репутацию (мне правда все равно)

4

Re: AHK: Проверка защиты скрипта.

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

5

Re: AHK: Проверка защиты скрипта.

А какие именно меры предприняты против отладчика, не знаете?
Динамическая память? Или немедленное закрытие программы при обнаружение отладчика внутри скрипта?

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

Спасибо.

Люблю когда мне понижают репутацию (мне правда все равно)

6

Re: AHK: Проверка защиты скрипта.

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

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

7

Re: AHK: Проверка защиты скрипта.

Тогда буду более уверен в защите, спасибо еще раз.

Люблю когда мне понижают репутацию (мне правда все равно)

8

Re: AHK: Проверка защиты скрипта.

f11::
 FIjeifjwoiethowiethfweofjfweojfweo := A+B
 Tiji = 6
 A += 5
 B += 7
 MsgBox,%A%`n%B%`n%FIjeifjwoiethowiethfweofjfweojfweo%
 Return

9

Re: AHK: Проверка защиты скрипта.

Тоже удалось декомпилировать. Забавно, что пароль там открытым текстом записан.

oFile := FileOpen("D:\Downloads\Test.exe", "r")
oFile.RawRead(buff, len := oFile.Length)
oFile.Close()
pPtr := &buff - 2
while pPtr := DllCall("msvcrt\memchr", Ptr, pPtr + 2, Int, Ord("D"), Ptr, ( len - (A_Index = 1 ? 0 : &buff - pPtr) )//2, Ptr)  {
   if StrGet(pPtr, 10) = "DllImport."  {
      while c := StrGet(pPtr + 12*2 + (A_Index - 1)*10, 1)
         pwd .= c
      break
   }
}
MsgBox, % pwd
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

10

Re: AHK: Проверка защиты скрипта.

Хе, так что получается, защита AutoHotkey_H — миф? Или надо уметь её готовить?

11

Re: AHK: Проверка защиты скрипта.

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

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

12

Re: AHK: Проверка защиты скрипта.

teadrinker пишет:

Тоже удалось декомпилировать

Не "Тоже", а "Удалось", так как я просто посмотрел listlines.
Круто у тебя получилось!

13

Re: AHK: Проверка защиты скрипта.

teadrinker пишет:

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

Но меньшинство-то уже давно должно было написать декомпилятор и выложить в открытый доступ.

Malcev пишет:

Не "Тоже", а "Удалось", так как я просто посмотрел listlines.

Голь на выдумку хитра.

14

Re: AHK: Проверка защиты скрипта.

YMP пишет:

Но меньшинство-то уже давно должно было написать декомпилятор и выложить в открытый доступ.

Я, к сожалению, связан некоторыми обязательствами.

Malcev пишет:

я просто посмотрел listlines

А я думал, ты всякие дебаггеры ковырял!

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

15

Re: AHK: Проверка защиты скрипта.

teadrinker пишет:

Я, к сожалению, связан некоторыми обязательствами.

Нет, я не про тебя, а про тех, у кого руки чешутся оторвать всё, что приколочено.

16 (изменено: Malcev, 2018-06-21 12:44:14)

Re: AHK: Проверка защиты скрипта.

teadrinker, а не хочешь поделиться, как ты решил эту задачу (алгоритм)?
Я загуглил этот вызов DllCall("msvcrt\memchr" и нашел только упоминание Lexikos о нём:
https://autohotkey.com/board/topic/8298 … hod/page-2

17

Re: AHK: Проверка защиты скрипта.

Алгоритм, в смысле, как код работает?

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

18

Re: AHK: Проверка защиты скрипта.

Как код работает я вроде понимаю - ищет в памяти букву D и проверяет не начало ли она слова DllImport.
А вот откуда ты взял, что надо искать DllImport и вот этот  адрес while c := StrGet(pPtr + 12*2 + (A_Index - 1)*10, 1) и длину?

19 (изменено: teadrinker, 2018-06-21 14:06:33)

Re: AHK: Проверка защиты скрипта.

Кстати, перемудрил немного, правильно так:

oFile := FileOpen("D:\Downloads\Test.exe", "r")
oFile.RawRead(buff, len := oFile.Length)
oFile.Close()
pPtr := &buff - 2
while pPtr := DllCall("msvcrt\memchr", Ptr, pPtr + 2, Int, Ord("D"), Ptr, (&buff + len - pPtr)//2, Ptr)  {
   if StrGet(pPtr, 10) = "DllImport."  {
      while c := StrGet(pPtr + 12*2 + (A_Index - 1)*10, 1)
         pwd .= c
      break
   }
}
MsgBox, % pwd

Известно, что пароль по умолчанию — "AutoHotkey". Изучив исходный код AHK_H, узнал, что символы пароля записаны не подряд, а разрежены несколькими нулевыми байтами. Т. к. в C++ не спец, точно не понял, сколькими именно. Решил наудачу поискать пароль в экзешнике по юникодному символу "y" — их не очень много. Открыл экзешник в hex-редакторе и обнаружил подходящую последовательность после слова "DllImport." и четырёх нулевых байтов — отсюда 12*2 — десять юникодных символов плюс два пропуска. Символы пароля шли через 8 нулевых байтов, а после последнего их 12 — так рассчитал оффсеты. Данный расчёт валиден для unicode-версии, для ANSI длина символов и нулевых байтов будет в два раза меньше, соответственно формула расчёта изменится.

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

20

Re: AHK: Проверка защиты скрипта.

Зря вы раскрываете алгоритмы — теперь baplo усложнит защиту)).

21 (изменено: Malcev, 2018-06-21 14:27:30)

Re: AHK: Проверка защиты скрипта.

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

22

Re: AHK: Проверка защиты скрипта.

Чтобы усложнить защиту, придётся пересобрать исходный код — это не так просто для неспециалиста.
С отладчиками я пока не в ладу — знаний ассемблера не хватает. Здесь YMP'у карты в руки!

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

23 (изменено: stealzy, 2018-06-21 16:09:46)

Re: AHK: Проверка защиты скрипта.

teadrinker пишет:

Забавно, что пароль там открытым текстом

HotKeyIt этого и не скрывал, мало того он предлагает желающим переписывать исходный код прячущий пароль.
Это изначально была security throw obscurity.
baplo думаю может спать спокойно, судя по вопросам на форуме получивший его код в ужасе захочет немедленно это развидеть.

24

Re: AHK: Проверка защиты скрипта.

teadrinker пишет:

С отладчиками я пока не в ладу — знаний ассемблера не хватает. Здесь YMP'у карты в руки!

Тут ещё знание отладчиков нужно. Я только с OllyDbg немного имел дело.

25

Re: AHK: Проверка защиты скрипта.

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

26

Re: AHK: Проверка защиты скрипта.

Есть "Кулибины", которые этим занимаются в целях самообразования, не преследуя никаких целей. А есть ещё те, кто это творчество монетизирует, при этом оставляя в открытом доступе довольно приличные "заманухи", с которых тоже можно стартовать своё обучение, но то, не для слабых духом.

Так что, увы, вся защита кода:

Malcev пишет:

Вопрос только в интересе или цене.

27 (изменено: baplo, 2018-06-23 00:01:50)

Re: AHK: Проверка защиты скрипта.

teadrinker пишет:

Кстати, перемудрил немного, правильно так:

Как я понимаю, только на обфускацию можно рассчитывать?
И если изменить стандартный пароль, я думаю от этого толка мало.
Эх, жалко.

P.S Я просто не помню, менял ли я пароль, при компиляции файла

Люблю когда мне понижают репутацию (мне правда все равно)

28

Re: AHK: Проверка защиты скрипта.

baplo пишет:

Как я понимаю, только на обфускацию можно рассчитывать?

Почему, можно собрать свою версию AHK_H, как я выше писал.

Я просто не помню, менял ли я пароль, при компиляции файла

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

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

29 (изменено: baplo, 2018-06-23 09:04:40)

Re: AHK: Проверка защиты скрипта.

teadrinker пишет:

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

Зачем же тогда предлагают ввести пароль при компиляции?

https://i.imgur.com/m9Ng1V9.png

К сожалению я не силён в C++

Люблю когда мне понижают репутацию (мне правда все равно)

30

Re: AHK: Проверка защиты скрипта.

Не знаю, зачем, видимо, просто не доделано.

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

31

Re: AHK: Проверка защиты скрипта.

Не, всё доделано.
Просто ahk2exe не может сам прочитать пароль из Autohotkey.exe.
Поэтому оба пароля должны совпадать.

32 (изменено: teadrinker, 2018-06-25 09:49:16)

Re: AHK: Проверка защиты скрипта.

Не совсем тебя понял. Наоборот, это AutoHotkey.exe читает пароль из ahk2exe и с его помощью шифрует код скрипта, но так как в AutoHotkey.exe новый пароль не сохраняется, расшифровать обратно он его уже не может.
Кстати, учитывая что пароль записывается в результирующий файл открытым текстом, это легко можно исправить, по-крайней мере, если сохранить длину пароля прежней.

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

33

Re: AHK: Проверка защиты скрипта.

HotKeyIt писал:

Ahk2Exe is not able to read the password from AutoHotkey.exe.
User needs to enter the password used in AutoHotkey.exe so Ahk2Exe can encrypt the data properly.

https://autohotkey.com/boards/viewtopic … 237#p38237

34

Re: AHK: Проверка защиты скрипта.

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

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

35 (изменено: Malcev, 2018-06-25 14:22:39)

Re: AHK: Проверка защиты скрипта.

Я так понял, что в этом и смысл, что компиляция произойдет в любом случае, но файл не запустится если пароли не совпадут.

teadrinker пишет:

AutoHotkey.exe читает пароль из ahk2exe и с его помощью шифрует код скрипта

А что тогда делает эта функция?

ZipRawMemory(&data, len, zip, UsePassword)

https://github.com/HotKeyIt/ahkdll-v1-r … mpiler.ahk

36

Re: AHK: Проверка защиты скрипта.

Ну да, но файл-то правильно зашифруется с новым паролем. Чтобы такой файл запустился, достаточно его пропатчить, заменив пароль на новый.

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

37

Re: AHK: Проверка защиты скрипта.

Malcev пишет:

А что тогда делает эта функция?

Шифрует код, а пароль как раз используется из Ahk2Exe.

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

38

Re: AHK: Проверка защиты скрипта.

Ну тогда получается, что всё доделано?

39

Re: AHK: Проверка защиты скрипта.

За исключением того, что новый пароль не сохраняется.

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

40

Re: AHK: Проверка защиты скрипта.

А ты пробовал собрать исходники с другим паролем, скомпилировать скрипт и вытащить пароль?

41

Re: AHK: Проверка защиты скрипта.

Да, собирал с другим паролем, скрипты работают. Но я ж говорю, можно не пересобирать, а просто пропатчить.

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

42

Re: AHK: Проверка защиты скрипта.

А как собирал?
Я пробовал изменить букву A на B тут, после компиляции переименовывал  AutoHotkey в Ahk2Exe, компилировал им скрипт, но пароль оставался прежним.

pw[i] = pwd == g_default_pwd ? (TCHAR) _T("A\0\0\0\0u\0\0\0\0t\0\0\0\0o\0\0\0\0H\0\0\0\0o\0\0\0\0t\0\0\0\0k\0\0\0\0e\0\0\0\0y\0\0\0\0")[i*5] : (TCHAR)*pwd[i];

https://github.com/HotKeyIt/ahkdll/blob … .cpp#L3219

43

Re: AHK: Проверка защиты скрипта.

Не нужно переименовывать, используй старый Ahk2Exe, там укажи новый пароль, а в качестве интерпретатора укажи новый AutoHotkey.exe.

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

44 (изменено: Malcev, 2018-06-25 21:15:37)

Re: AHK: Проверка защиты скрипта.

Так вообще не запускается.
Может потому что на выходе после MVS я получаю файл размером 1.09 MB (1,146,880 bytes)?
И вот тут автор пишет, что можно свою функцию по созданию пароля вписать.
Как думаешь, со своей функцией тоже пароль виден будет?
https://github.com/HotKeyIt/ahkdll/issues/15

45

Re: AHK: Проверка защиты скрипта.

Значит, собрал неправильно. Со своей функцией можно придумать, чтоб пароль как-то шифровался, тогда будет сложнее.

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

46 (изменено: MandarinKa02, 2018-06-25 22:09:58)

Re: AHK: Проверка защиты скрипта.

Можно сделать по другому: взять mac текущей машины+пароль и всё это в hash. Чем длиннее пароль, тем больше потребуется вычислительных мощностей, чтоб раскодировать пароль. Можно еще несколько раз завернуть в hash, приписать пару значений и хацкер не будет спать очень длительный промежуток времени.

Покинул форум

47

Re: AHK: Проверка защиты скрипта.

teadrinker пишет:

Не нужно переименовывать, используй старый Ahk2Exe, там укажи новый пароль, а в качестве интерпретатора укажи новый AutoHotkey.exe.

А для таких чайников, как я, можно вообще что то понять из того, что вы сказали?

И еще интересно, можно ли все эти перепачты и изменения пароля автоматизировать в том же AHK скрипте?И если да, то почему все еще никто такого не изобрел?о.о

Как я понял, в окошке с паролем нет смысла, если патча Ahk2Exe нет?

P.S сложно для меня, т.к я в этом не разбирался

Люблю когда мне понижают репутацию (мне правда все равно)

48 (изменено: stealzy, 2018-06-26 00:59:01)

Re: AHK: Проверка защиты скрипта.

Когда вы занимаетесь security through obscurity нужно делать так, чтобы никто кроме вас не знал как вы это сделали. В этом и заключается безопасность.
Если кто-то сделает и покажет как он это сделал, то вся защита пропадает.

baplo пишет:

почему все еще никто такого не изобрел?

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

49

Re: AHK: Проверка защиты скрипта.

stealzy пишет:

Когда вы занимаетесь security through obscurity нужно делать так, чтобы никто кроме вас не знал как вы это сделали.

В принципе согласен, хотя патчер уже написал.

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

50 (изменено: Malcev, 2018-06-26 07:10:20)

Re: AHK: Проверка защиты скрипта.

teadrinker пишет:

Значит, собрал неправильно

А ты какой версией собирал?
Я делал по этой инструкции, но что-то видно пошло не так.
https://autohotkey.com/boards/viewtopic … mp;t=13373

teadrinker пишет:

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

Но пароль будет находиться всё-равно после слова DllImport?

51 (изменено: teadrinker, 2018-06-26 13:38:44)

Re: AHK: Проверка защиты скрипта.

Собирал VS 2017, по той же инструкции, сначала выдавало ошибки, но с вариантами исправления.
Пусть даже пароль там и останется, но если он будет зашифрован, им не получится воспользоваться, т. к. в код будет добавлена дополнительная функция раскодировки пароля, неизвестная взломщику.

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

52

Re: AHK: Проверка защиты скрипта.

А 2017 полный устанавливал со всеми дополнениями?
Просто мне интересно, если вставить туда какую-нибудь простейшую функцию шифрования пароля, то что будет показываться в экзешнике.

53

Re: AHK: Проверка защиты скрипта.

Зачем со всеми? Там их куча под разные языки, только под C/C++.

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

54

Re: AHK: Проверка защиты скрипта.

Пока вот, что имею:
Если компилирую из VS2015, то ошибок нету ни при создании x64 ни при win32.
Если после этого переименовываю эти оба файла в Ahk2Exe, то ahk-компилятор запускается.
Выбираю в качестве базы Ahk2Exe, компилирую и в итоге с x64 базой скрипт запускается нормально, а с win32 нет.
Можешь у себя проверить?

55

Re: AHK: Проверка защиты скрипта.

Malcev пишет:

Если после этого переименовываю эти оба файла в Ahk2Exe

Ты чего-то недопонимаешь. Не нужно ничего переименовывать. Ты собираешь именно интерпретатор, а не компилятор. Файл должен называться AutoHotkey.exe. После сборки нужно заменить старый AutoHotkey.exe на новый. Потом запускаешь Ahk2Exe, выбираешь в Base File (.bin) свой новый AutoHotkey.exe и указываешь новый пароль. Нужно убедиться, что выбран именно нужный файл.

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

56

Re: AHK: Проверка защиты скрипта.

teadrinker пишет:

После сборки нужно заменить старый AutoHotkey.exe на новый.

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

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

57

Re: AHK: Проверка защиты скрипта.

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

58

Re: AHK: Проверка защиты скрипта.

Чтобы убедиться, что AutoHotkey.exe собран правильно, нужно просто запустить с его помощью любой ahk-скрипт.

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

59 (изменено: Malcev, 2018-06-27 19:10:45)

Re: AHK: Проверка защиты скрипта.

Ну так я о чём.

Malcev пишет:

Просто с помощью переименовки я проверяю работоспособность интерпритаторов - они работают, так как ahk2exe запускается.

60

Re: AHK: Проверка защиты скрипта.

Так зачем что-то переименовывать? Просто берёшь любой скрипт и опускаешь на свой новый AutoHotkey.exe.

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

61

Re: AHK: Проверка защиты скрипта.

Можно.
Но вопрос в другом - у тебя win32 скомпилированный скрипт запускается?

62

Re: AHK: Проверка защиты скрипта.

Конечно, а почему должен не запускаться? И 32, и 64 запускаются.

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

63

Re: AHK: Проверка защиты скрипта.

А, наверно понял, в чём может быть у тебя проблема. Ahk2Exe тоже должен быть запущен под соответствующую битность.

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

64

Re: AHK: Проверка защиты скрипта.

Это как?
Вот у меня файл win32 autohotkey.exe.
https://failiem.lv/u/aghyk8pu
Как, взяв его за базу, скомпилировать скрипт?

65

Re: AHK: Проверка защиты скрипта.

Там у тебя пароль не изменился.

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

66

Re: AHK: Проверка защиты скрипта.

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

67 (изменено: teadrinker, 2018-06-27 23:16:11)

Re: AHK: Проверка защиты скрипта.

Я лучше в картинках покажу. Когда скачиваешь AHK_H, получаешь такую папку:

https://i.imgur.com/UK4Cbt6.png

https://i.imgur.com/z29JjgA.png

Здесь в папке Win32w заменяешь файл AutoHotkey.exe на свой:

https://i.imgur.com/lfTuIF8.png

Дальше, не закрывая папку Win32w, открываешь в отдельном окне папку Compiler:

https://i.imgur.com/0v3p9ZD.png

Там скрипт Ahk2Exe.ahk:

https://i.imgur.com/aqdlNg0.png

Перетаскиваешь этот скрипт на свой же файл AutoHotkey.exe:

https://i.imgur.com/SuWVUYc.png

В появившемся окне в выпадающем списке Base File (.bin) выбираешь:

https://i.imgur.com/M2nOFWn.png

Выбираешь скрипт для компиляции, вводишь свой пароль, и нажимаешь > Compile Executable <

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

68 (изменено: Malcev, 2018-06-27 23:46:17)

Re: AHK: Проверка защиты скрипта.

Делал также - не работает.
Но у меня версия 1.1.29.1.
Может зальёшь свою - я проверю?

69

Re: AHK: Проверка защиты скрипта.

v1.1.28.0
1.1.29.01 пересобирать не пробовал, но в структуре файла разницы с предыдущим не заметил.

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

70

Re: AHK: Проверка защиты скрипта.

А ты можешь, пожалуйста, залить ahkdll-v1-release-master 1.1.28.0 версии и ahkdll-master.zip (исходник) 1.1.28.0 версии?

71

Re: AHK: Проверка защиты скрипта.

AHK_Hv1.1.28.0.7z

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

72

Re: AHK: Проверка защиты скрипта.

Вот AutoHotkey.exe v1.1.29.01 w32 с паролем 1234.

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

73 (изменено: teadrinker, 2018-06-28 01:41:25)

Re: AHK: Проверка защиты скрипта.

Malcev пишет:

А оригинального исходникм нету

А, нету, я заменял там libMinHook.x64.lib + libMinHook.x86.lib по инструкции на libMinHook-x64-v141-mt.lib + libMinHook-x86-v141-mt.lib, а названия их старые сохранил (вроде бы).

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

74

Re: AHK: Проверка защиты скрипта.

В общем результат тестов:
Если в VS2015 поставить в code generator /MT (как это написано в инструкции) и вывести в win32, то у меня в итоге получается нерабочий для последующей компиляции интерпритатор.
Если же оставить /MD, то всё ОК.
Для x64 версии работают оба варианта.

75

Re: AHK: Проверка защиты скрипта.

У меня в 2017 всё по инструкции получилось.

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

76

Re: AHK: Проверка защиты скрипта.

Не пробовал свою функцию подставлять?
Я пытался, но ничего не получилось.
Задал вопрос HotKeyIt - может подскажет...
https://github.com/HotKeyIt/ahkdll/issu … -400874587

77

Re: AHK: Проверка защиты скрипта.

Пока не пробовал.

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

78

Re: AHK: Проверка защиты скрипта.

Malcev пишет:

Пока вот, что имею:
Если компилирую из VS2015, то ошибок нету ни при создании x64 ни при win32.
Если после этого переименовываю эти оба файла в Ahk2Exe, то ahk-компилятор запускается.
Выбираю в качестве базы Ahk2Exe, компилирую и в итоге с x64 базой скрипт запускается нормально, а с win32 нет.

Аналогичная проблема. Все компилируется, на выходе autohotkey.exe весом ~1мб, скрипты запускает и вроде все работает, но при компиляции через этот autohotkey.exe выходит сломанное приложение, при запуске вылазит ошибка, что что-то там не найдено. Пробовал компилить в vs2015/2017 x32.

79

Re: AHK: Проверка защиты скрипта.

Ерунда какая-то. AutoHotkey.exe почему-то получаются меньшего размера, чем надо. х32 на полмегабайта, а х64 на мегабайт. Простые скрипты с ними работают, а скомплированные нет.

teadrinker явно чего-то не договаривает. Редиска он.

80

Re: AHK: Проверка защиты скрипта.

Только что пытался собрать v1.1.29.01 — тоже получаются файлы меньшего размера. Целевая платформа проекта — 10.0.15063.0. Если указать по инструкции Multi-threaded (/MT) — тоже получаются незапускающиеся файлы при компиляции. Если оставить Многопоточный DLL (/MD) — вроде работает.

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

81

Re: AHK: Проверка защиты скрипта.

Наконец, совсем немного изменив исходный код, создал недекомпилируемый вышеописанным способом экзешник.

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

82

Re: AHK: Проверка защиты скрипта.

Пароль находится в открытом виде?

83

Re: AHK: Проверка защиты скрипта.

Было так:

https://i.imgur.com/rk705xC.png

Стало так:

https://i.imgur.com/cJva5XV.png

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

84

Re: AHK: Проверка защиты скрипта.

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

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

85

Re: AHK: Проверка защиты скрипта.

Вот у меня при попытках вставить свою функцию тоже %..чего-то там выдавало.
Но я C++ совсем не знаю - делал от балды.

86

Re: AHK: Проверка защиты скрипта.

А в АНК Basic вроде свои пароли можно было вводить, его взломали?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

87

Re: AHK: Проверка защиты скрипта.

Я не взламывал.

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

88

Re: AHK: Проверка защиты скрипта.

Да, да, верим, верим.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

89

Re: AHK: Проверка защиты скрипта.

А как выглядит декомпилятор AutoHotkey_H, куда собственно пароль вводить?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

90

Re: AHK: Проверка защиты скрипта.

Никуда не надо, он его сам находит.

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

91

Re: AHK: Проверка защиты скрипта.

В смысле декомпилятора с вводом пароля не существует, а пароль только для шифрования исходника, чтобы из дампа памяти код не вытащить?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

92

Re: AHK: Проверка защиты скрипта.

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

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

93

Re: AHK: Проверка защиты скрипта.

teadrinker пишет:

только он там недолго держится в целости

А поподробнее, в AutoHotkey_L ведь всё время висит.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

94

Re: AHK: Проверка защиты скрипта.

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

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

95

Re: AHK: Проверка защиты скрипта.

Malcev пишет:

Не пробовал свою функцию подставлять?
Я пытался, но ничего не получилось.
Задал вопрос HotKeyIt - может подскажет...
https://github.com/HotKeyIt/ahkdll/issu … -400874587

К сожалению HotKeyIt проигнорировал вопрос и закрыл тему.

96 (изменено: teadrinker, 2018-08-17 18:24:00)

Re: AHK: Проверка защиты скрипта.

У меня в итоге получилось изменить алгоритм формирования пароля с минимальными дополнениями в исходном коде.

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

97

Re: AHK: Проверка защиты скрипта.

The code from malcev would not work if you change the amount of empty characters between letters, e.g. here we have only 3 empty characters in between.
pw = pwd == g_default_pwd ? (TCHAR) _T("A\0\0\0u\0\0\0t\0\0\0o\0\0\0H\0\0\0o\0\0\0t\0\0\0k\0\0\0e\0\0\0y\0\0\0")[i*4] : (TCHAR)*pwd;
Btw. they don't have to be empty of course and can be simply random characters, e.g:
pw = pwd == g_default_pwd ? (TCHAR) _T("AwdhuclrtslrodkrHorkodkrtEKskslEekrlylerklhkjghgfftzfzt")[i*4] : (TCHAR)*pwd;, which would result in AclroEllkgt with malcev's code.
You can also change to start not with first letter and many other alternatives, it is up to you to make it as difficult as you can:
pw = pwd == g_default_pwd ? (TCHAR) _T("xAwdhuclrtslrodkrHorkodkrtEKskslEekrlylerklhkjghgfftzfzt")[i*4+1] : (TCHAR)*pwd;

https://www.autohotkey.com/boards/viewt … 62#p252362

98

Re: AHK: Проверка защиты скрипта.

teadrinker пишет:

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

А код выполняемый с помощью загруженной autohotkey.dll тоже виден в памяти?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

99

Re: AHK: Проверка защиты скрипта.

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

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

100

Re: AHK: Проверка защиты скрипта.

teadrinker пишет:

А почему нет?

В теории да, но может на практике по другому.
Ок а сам код интерпретатора виден?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui