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
Skype dmitry_fiveg

10

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

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

11

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

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

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

12

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

teadrinker пишет:

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

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

13

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

teadrinker пишет:

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

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

Malcev пишет:

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

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

14

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

YMP пишет:

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

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

Malcev пишет:

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

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

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

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
Skype dmitry_fiveg

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
Skype dmitry_fiveg

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
Skype dmitry_fiveg

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 и модернизировал его, паралельно убрав все защиты и проверки, так что потом автор программы удивился, как целую кучу его ловушек обошли.