Здравствуйте. Помогите исправить данную форму. При попытке запустить ее Autohotkey выдает ошибку:
Code: Select all
#SingleInstance Force
MsgBox, 4, AutoCRM, Вы хотите изменить настройки запуска?, 5
Sleep, 1000
Send, {TAB}{SPACE}
IfMsgBox Yes
{
; Читаем сохранённые настройки из файла AppLauncher.ini
IniRead, viSurname, AppLauncher.ini, Settings, Surname, Фамилия
IniRead, viKeyScreen, AppLauncher.ini, Settings, KeyScreen, Клавиша для скриншотов
IniRead, viKeyCall, AppLauncher.ini, Settings, KeyCall, Клавиша для автозвонка
; Создаём окно с подписями, текстовыми полями и кнопками
Gui, New
Gui, Add, Text , XM YM W60 R1, Фамилия:
Gui, Add, Edit , X+10 YP W200 R1 vEd_Surname, %viSurname%
Gui, Add, Text , XM Y+M W60 R1, Скриншоты:
Gui, Add, Edit , X+10 YP W200 R1 vEd_KeyScreen, %viKeyScreen%
Gui, Add, Text , XM Y+M W60 R1, Автозвонок:
Gui, Add, Edit , X+10 YP W200 R1 vEd_KeyCall, %viKeyCall%
Gui, Show,, App Launcher
Return
}
; При нажатии Esc, закрытии окна или нажатии кнопки Exit скрипт завершается.
GuiEscape:
GuiClose:
OnButtonExit:
ExitApp
; При нажатии Save значения из текстовых полей сохраняются в файл настроек AppLauncher.ini
OnButtonSave:
Gui, Submit, NoHide
IniWrite, %Ed_Surname%, AppLauncher.ini, Settings, Surname
IniWrite, %Ed_KeyScreen%, AppLauncher.ini, Settings, KeyScreen
IniWrite, %Ed_KeyCall%, AppLauncher.ini, Settings, KeyCall
SoundPlay, *64
ToolTip, Saved!
Sleep 1000
ToolTip
Return
; При нажатии кнопки Start запускаем приложение с указанными в текстовых полях данными
OnButtonRun:
:*:пз::
FormatTime, CurrentDateTime,, dd.MM H:mm
SetKeyDelay 0
Send %CurrentDateTime% перезвонить %viSurname%
Return
%viKeyScreen%::
Send, #{PrintScreen}
%viKeyCall%::
MouseMove, 150, 129
Click 158, 159
Sleep 1000
Click 617, 207
Return
}
else
{
IniRead, viSurname, AppLauncher.ini, Settings, Surname, Фамилия
IniRead, viKeyScreen, AppLauncher.ini, Settings, KeyScreen, Клавиша для скриншотов
IniRead, viKeyCall , AppLauncher.ini, Settings, KeyCall, Клавиша для автозвонка
:*:пз::
FormatTime, CurrentDateTime,, dd.MM H:mm
SetKeyDelay 0
Send %CurrentDateTime% прз %viSurname% (тут - что озвучили)
Return
%viKeyScreen%::
Send, #{PrintScreen}
%viKeyCall%::
MouseMove, 150, 129
Click 158, 159
Sleep 1000
Click 617, 207
Return
}
AutoHotkey — это приложение для автоматизации клавиатурных и мышинных действий на компьютере, которое позволяет создавать макросы и скрипты для управления приложениями. Однако, как и любое другое приложение, AutoHotkey иногда может вызывать проблемы. В этой статье мы рассмотрим несколько действенных способов исправления ошибок в AutoHotkey.
1. Обновление AutoHotkey
Если у вас возникают проблемы с AutoHotkey, первым шагом должно быть обновление приложения до последней версии. В новых версиях могут быть исправлены ошибки, которые вызывают проблемы в предыдущих версиях, поэтому это может решить проблему.
2. Проверка кода
Если ваш скрипт AutoHotkey не работает должным образом, проблема может быть в коде. Проверьте весь код на наличие опечаток, неправильных функций и переменных. Также нужно проверить, не нарушает ли ваш код синтаксис AutoHotkey.
3. Исправление ошибок в реестре
Если AutoHotkey все еще вызывает проблемы после обновления и проверки кода, то может быть проблема в реестре. Иногда установка приложений может изменить реестр и привести к ошибкам в AutoHotkey. Чтобы исправить это, нужно отредактировать реестр и удалить записи, связанные с AutoHotkey. Для этого следуйте инструкциям от Microsoft здесь.
4. Использование средства отладки
AutoHotkey поставляется с средством отладки, которое может помочь вам определить, почему ваш код не работает. Чтобы использовать средство отладки AutoHotkey, нужно запустить приложение с параметром /debug, например, «AutoHotkey.exe /debug script.ahk». После того, как ваш скрипт будет запущен, откроется окно отладки, где вы сможете увидеть, какие функции и переменные используются в вашем скрипте.
5. Использование сообщества AutoHotkey
Если ничто из вышеперечисленного не помогло решить вашу проблему, можно обратиться к сообществу AutoHotkey. AutoHotkey обладает большим сообществом пользователей и разработчиков, которые могут помочь вам решить ваши проблемы. Вы можете найти сообщество AutoHotkey на официальном форуме.
В заключение, AutoHotkey может вызывать проблемы, но с помощью этих действенных способов можно решить большинство ошибок. Обновление приложения, проверка кода, исправление ошибок в реестре, использование средства отладки и сообщества AutoHotkey — все эти методы могут помочь вам решить проблемы с AutoHotkey.
1 2022-08-01 15:32:19 (изменено: Clannad5, 2022-08-03 10:54:49)
- Clannad5
- Участник
- Неактивен
Тема: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
Здравствуйте!
В папке по пути: «C:\Program Files\AutoHotkey»
есть файл «AutoHotkey.exe».
С помощью него можно запускать скрипты.ahk.
Но если ему убрать название скрипта, с таким же названием файла.exe, то вылезает подобная ошибка:
Чтобы не вылезала ошибка, файл AutoHotkey.exe должен называться так же как скрипт, то есть Autohotkey.ahk.
Я хочу найти решение, чтобы убрать эту ошибку.
Нужно чтобы при запуске AutoHotkey’я без указания скрипта, он не пытался выводить каких-либо сообщений, что-то типа некого аналога .bat файлов.
Когда их запускаешь без входных данных, они просто мелькают и закрываются.
Нужно мне это для того, чтобы файл можно было запускать только с другой программы.
Run, AutoHotkey.exe Script.ahk
Пока из всего нашел только возможность прятать файл внутри программы и когда нужно выполнить скрипт, вытаскивать его.
Либо же можно переименовать расширение файла и когда нужно выполнить скрипт переименовывать обратно.
Но хотелось бы обойтись без костылей и отключить эти надоедающие сообщения с диалоговыми окнами.
Условие такое, что изначально файла Script.ahk нету в разделе, он скачивается через UrlDownloadFile и потом запускается.
UPD: Пришлось брать исходники AHK и вырезать окно с ошибкой.
Теперь Интерпретатор просто закрывается, если отсутствует скрипт.
2 Ответ от teadrinker 2022-08-01 18:27:18
- teadrinker
- Администратор
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
А зачем вообще запускать AutoHotkey.exe, если файла нет? Просто не запускайте его.
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder
3 Ответ от Clannad5 2022-08-01 22:35:24
- Clannad5
- Участник
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
teadrinker
Если бы я хотел конкретно такого решения, то я бы не создавал подобную тему.
Причина эстетичности для меня важный друг и хотелось бы, чтобы было как по задумке, которую я описал.
Просто может в исходниках как-то можно удалить подобную всплывающею ошибку, но я не силён в этом и хотелось бы узнать ответ у знающих людей.
4 Ответ от teadrinker 2022-08-02 00:10:31
- teadrinker
- Администратор
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
А разве эстетично совершать какое-либо действие, не проверив, есть ли условия для него? Хорошее программирование как раз и строится на таких принципах.
А в исходниках, конечно, всё можно поменять, можно даже сделать так, чтобы при старте котиков показывало.
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder
5 Ответ от Clannad5 2022-08-02 12:55:43
- Clannad5
- Участник
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
teadrinker
Жаль я не силён в компилирование таких исходников…
Если бы хотя бы видеопример какой-нибудь найти на этот случай.
Нужно будет попробовать конечно в этом разобраться.
Кстати, как вы говорите «Можно хоть котиков показывать», следовательно можно все названия команд поменять на свои?
Чтобы мои скрипты читались только моим интерпретатором? Или всё не так просто как кажется?
Просто если это так, было бы здорово, если бы кто-то взялся бы за подобное и сделал некий шифратор всех команд с последующей сборкой исходника в .exe формат.
То есть:
1. Программа берет список всех команд исходника и шифрует каждую команду или только часть на выбор.
2. При шифровке сравнивает ahk скрипт на наличие схожих команд.
3. Шифрует все эти команды в ahk и в исходники, чтобы в дальнейшем они совпадали.
4. применяется некая обфускация кода .
5. Ahk скрипт компилируется исходя из готового .exe интерпретатора.
На выходе получаем скрипт, который шифрует все команды, функции, переменные.
В голове это всё звучит здорово.
Плюсы такого подхода в том, что даже если злоумышленник достанет исходный код, он не сможет его воспринимать физически, не думаю что он захочет разбираться в нём.
Можно конечно написать программу, которая будет пытаться прочитать каждую строчку по отдельности и сопоставить все команды, которые бы могли подходить, но не думаю что это будет так просто.
6 Ответ от teadrinker 2022-08-02 13:49:33
- teadrinker
- Администратор
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
если бы кто-то взялся бы за подобное
то не стал бы выкладывать результат в открытый доступ.
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder
7 Ответ от Clannad5 2022-08-02 14:22:24
- Clannad5
- Участник
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
teadrinker
ну тоже верно.
Хотя можно просто продавать способ, либо упаковывать на заказ.
8 Ответ от Phoenixxx_Czar 2022-08-02 19:30:38
- Phoenixxx_Czar
- Участник
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
AG был хорошим компилятором, пока автор не слил декомплиятор на него же.. Хотя там был шифр цезаря для кода.
Win10: LTSC (21H2); AHK: ANSI (v1.1.36.02)
9 Ответ от teadrinker 2022-08-02 23:28:51
- teadrinker
- Администратор
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
Если кому надо, я продаю свой вариант компилятора с защитой и шифрованием исходного кода, обращайтесь в телеграм.
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder
10 Ответ от Clannad5 2022-08-03 02:17:27 (изменено: Clannad5, 2022-08-03 03:52:38)
- Clannad5
- Участник
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
Phoenixxx_Czar
Недавно наткнулся на данный вид шифрования:
/*
;-------------------------------
AHK source code Encryptor v2.7 By FeiYue
1. This tool can encrypt the AHK script into a self decode script.
2. Then you can use ahk2exe to compile the script into a program,
combined with mpress.exe or upx.exe packers.
Note: To compile the script, you must have a AutoHotkey.exe
in the script directory.
3. When you want to use the directory relative to the script(eg 001.jpg),
Don't use A_ScriptDir, but use A_WorkingDir. It is recommended to backup
the working directory to a variable at the beginning of the script,
Then change the path to absolute path based on the variable (eg %dir%\001.jpg).
4. When you want to Reload your own script, the built-in Reload command will fail,
You can use Reload() function instead (it's added when encrypted).
;-------------------------------
*/
#NoEnv
#SingleInstance force
ListLines, Off
SetBatchLines, -1
Version = 2.7
fs=
(` %
Exec(str, Ahk="", arg="") {
static MyFunc, base, ScriptName:=%True%
s:=RegExReplace(str,"\s"), StrReplace(s,"u","",size)
VarSetCapacity(str,(size+1)*4,0), s:=SubStr(s,InStr(s,"u")+1)
Loop, Parse, s, u
NumPut(A_LoopField, str, (A_Index-1)*4, "uint")
;-----------------------------
Ahk:=Ahk ? Ahk : A_IsCompiled
? A_ScriptDir "\AutoHotkey.exe" : A_AhkPath
IfNotExist, %Ahk%
{
MsgBox, 4096, Error!, `n`nCan't Find: %Ahk% !`n`n
return, 0
}
if !MyFunc
{
x32:="5557565381EC4C0100008B9C24680100008BBC246C01000"
. "08BAC24700100008B433C01D88038500F85380500008078014"
. "50F852E0500008B706085F60F84FF04000031C9837864010F9"
. "2C119D283E210894C245083C2788B341001DE8B4E188974243"
. "C8B562085C90F84E504000031C08D3413EB0B83C00139C10F8"
. "4D30400008B1486813C134765745075E9817C1304726F63417"
. "5DF8B74243C8D04430346240FB7008D048303461C8B3085F60"
. "F84A0040000B86500000001DE891C2466894424688D442460C"
. "744246057726974C74424646546696C89442404FFD683EC088"
. "944243C8D442475891C24C7442475476C6F62C7442479616C4"
. "16CC744247D6C6F630089442404FFD683EC08BA65650000894"
. "424548D44246A6689542472891C24C744246A476C6F62C7442"
. "46E616C4672C64424740089442404FFD683EC08B9734100008"
. "94424488D84248D00000066898C2499000000891C24C784248"
. "D00000043726561C784249100000074655072C784249500000"
. "06F636573C684249B0000000089442404FFD683EC088944245"
. "C8D8424BE000000891C24C78424BE00000043726561C78424C"
. "200000074654E61C78424C60000006D656450C78424CA00000"
. "069706541C68424CE0000000089442404FFD683EC088944245"
. "88D8424CF000000891C24C78424CF000000436F6E6EC78424D"
. "30000006563744EC78424D7000000616D6564C78424DB00000"
. "050697065C68424DF0000000089442404FFD683EC088944244"
. "08D842481000000891C24C7842481000000436C6F73C784248"
. "50000006548616EC7842489000000646C650089442404FFD68"
. "3EC088D5C24608944244CC744241000000000C744240800000"
. "000897C2404895C240CC7042400000000FF54243C83EC14807"
. "C2460000F85E50200008D34AD04000000C7042400000000897"
. "4244489742404FF54245483EC0885C089C30F841703000031C"
. "085ED7415908B148789148383C00139C575F38B44244483E80"
. "4C7040300000000C784249C0000000B000000BA0B000000C78"
. "424A00000000D000000C78424A40000001100000031C0C7842"
. "4A800000013000000EB0C89C283E2038B94949C00000069D28"
. "300000089C183E10301C283C00183F86489948C9C00000075D"
. "831D285ED742D669089D183E10369848C9C000000830000000"
. "1D089848C9C000000330493D1C083C00189049383C20139D57"
. "5D58B8424640100008B742458C744241C00000000C74424180"
. "0000000C744241400000000C744241000000000C744240CFF0"
. "00000C744240800000000C744240402000000890424FFD683E"
. "C2089C78B842464010000C744241C00000000C744241800000"
. "000C744241400000000C744241000000000C744240CFF00000"
. "0C744240800000000C744240402000000890424FFD683EC208"
. "3FFFF89C60F849D01000083F8FF0F84940100008D8C24E0000"
. "0008D94244001000089C8C7000000000083C00439C275F3837"
. "C245001894C2420C744241C00000000C744241800000000C74"
. "4241400000000C744241000000000C744240C00000000C7442"
. "4080000000019C0C704240000000083E0E483C060898424E00"
. "000008D8424AC000000894424248B84246001000089442404F"
. "F54245C83EC2885C00F84DA0000008B6C244C8B8424AC00000"
. "089042489E8FFD083EC048B8424B000000089042489E8FFD08"
. "3EC04893C24C744240400000000FF54244083EC0889E8893C2"
. "4FFD083EC04893424C744240400000000FF54244083EC088D4"
. "42460895C2404893424C7442410000000008944240C8B44244"
. "489442408FF54243C83EC1489E8893424FFD083EC04891C24F"
. "F54244883EC0431C081C44C0100005B5E5F5DC21400C744245"
. "001000000BA88000000E904FBFFFFB8FEFFFFFF81C44C01000"
. "05B5E5F5DC2140081C44C010000B8FFFFFFFF5B5E5F5DC2140"
. "0B8FDFFFFFFEBDA893C248B7C244C89F8FFD083EC0489F8893"
. "424FFD083EC04891C24FF542448B8FAFFFFFF83EC04EBB1893"
. "C248B7C244C89F8FFD083EC0489F8893424FFD083EC04891C2"
. "4FF542448B8FBFFFFFF83EC04EB88B8FCFFFFFFEB8190"
x64:="4157415641554154555756534881EC98010000B8FFFFFFF"
. "F8BB4240002000048899424E8010000418B503C4D89C748898"
. "C24E00100004D89CC4C01C2803A500F858C040000807A01450"
. "F8582040000448B42604585C00F8489040000837A64014819C"
. "031FF83E0104883C078837A6401400F92C7897C245C448B0C0"
. "2B8FEFFFFFF4D01F9418B4918418B512085C90F843D0400003"
. "1C04D8D0417EB100F1F40004883C00139C10F864B040000418"
. "B148041813C174765745075E641817C1704726F634175DB418"
. "B5124498D04470FB71410418B411C498D14978B3C0285FF0F8"
. "41304000048B8577269746546696C488D6C24704C01FF48894"
. "42470B8650000004C89F94889EA6689442478FFD74989C548B"
. "8476C6F62616C416C488D9424900000004C89F948898424900"
. "00000C78424980000006C6F6300FFD7BA656500004889C348B"
. "8476C6F62616C467266899424880000004C89F9488D9424800"
. "000004889842480000000C684248A00000000FFD7B97341000"
. "0488944245048B8437265617465507266898C24BC000000488"
. "D9424B00000004C89F948898424B0000000C78424B80000006"
. "F636573C68424BE00000000FFD7488944246048B8437265617"
. "4654E61488D9424D000000048898424D000000048B86D65645"
. "0697065414C89F948898424D8000000C68424E000000000FFD"
. "74989C648B8436F6E6E6563744E488D9424F00000004889842"
. "4F000000048B8616D6564506970654C89F948898424F800000"
. "0C684240001000000FFD7488944246848B8436C6F736548616"
. "E488D9424A00000004C89F948898424A0000000C78424A8000"
. "000646C6500FFD74531C031C94889C748C7442420000000004"
. "989E94C89E241FFD5807C247000B8FDFFFFFF0F85490200008"
. "D14B50400000031C94989D7FFD34885C04889C30F849202000"
. "031C085F6741D0F1F840000000000418B14848914834883C00"
. "139C677F189F048C1E002C7040300000000C78424C00000000"
. "B000000BA0B000000C78424C40000000D000000C78424C8000"
. "0001100000031C0C78424CC00000013000000EB0C89C283E20"
. "38B9494C000000069D28300000089C183E10301C283C00183F"
. "86489948CC000000075D831D285F6742E904889D183E103698"
. "48CC00000008300000001D089848CC0000000330493D1C083C"
. "0018904934883C20139D677D34531C041B9FF000000BA02000"
. "000488B8C24E801000048C744243800000000C744243000000"
. "000C744242800000000C74424200000000041FFD64889C6453"
. "1C048C744243800000000C744243000000000C744242800000"
. "00041B9FF000000C744242000000000BA02000000488B8C24E"
. "801000041FFD64883FEFF4989C40F84380100004883F8FF0F8"
. "42E010000488D8C2430010000488D9424900100004889C8669"
. "0C700000000004883C0044839C275F1837C245C0148894C244"
. "048C74424380000000048C744243000000000C744242800000"
. "000C744242000000000488B9424E001000019C04531C94531C"
. "083E0E431C983C06089842430010000488D842410010000488"
. "9442448488B442460FFD085C00F8488000000488B8C2410010"
. "000FFD7488B8C2418010000FFD74C8B74246831D24889F14C8"
. "9F0FFD04889F1FFD731D24C89E14C89F0FFD04989E94589F84"
. "889DA4C89E148C74424200000000041FFD54C89E1FFD74889D"
. "9488B442450FFD031C04881C4980100005B5E5F5D415C415D4"
. "15E415FC3B888000000C744245C01000000E981FBFFFFB8FEF"
. "FFFFFEBD34889F1FFD74C89E1FFD74889D9488B442450FFD0B"
. "8FAFFFFFFEBB84889F1FFD74C89E1FFD74889D9488B442450F"
. "FD0B8FBFFFFFFEB9DB8FCFFFFFFEB969090909090"
hex:=A_PtrSize=8 ? x64:x32
VarSetCapacity(MyFunc, len:=StrLen(hex)//2)
Loop, % len
NumPut("0x" SubStr(hex,2*A_Index-1,2),MyFunc,A_Index-1,"uchar")
DllCall("VirtualProtect","ptr",&MyFunc,"ptr",len,"uint",0x40,"ptr*",0)
base:=DllCall("GetModuleHandle", "Str","Kernel32", "ptr")
ScriptName:=ScriptName ? ScriptName : A_ScriptFullPath
}
; Random, n, 1, 1000000
pipe_name:="\\.\pipe\" . A_ScriptName
; n
cmdline="%Ahk%" "%pipe_name%" "%ScriptName%" %arg%
DllCall(&MyFunc, "AStr",cmdline, "AStr",pipe_name
, "ptr",base, "ptr",&str, "uint",size)
return, 1
}
)
if 0>0
{
file:=%True%
IfExist, %file%
Gosub, Encrypt
ExitApp
}
Gui, +AlwaysOnTop +ToolWindow
Gui, Color, DDEEFF
Gui, Font, cRed s28
Gui, Add, Text,, Drag the AHK script here to Encrypt`n`n
Gui, Show,, AHK source code Encryptor v%Version% - By FeiYue
OnMessage(0x201, "LButton_Down")
LButton_Down() {
SendMessage, 0xA1, 2
}
return
GuiClose:
ExitApp
GuiDropFiles:
Gui, +OwnDialogs
Loop, parse, A_GuiEvent, `n
{
file:=A_LoopField
MsgBox, 4100, Tip, Do you want to encrypt this file ?`n`n%file%
IfMsgBox, Yes
{
Gosub, Encrypt
MsgBox, 4096, Tip, Encryption is completed !
}
}
return
Encrypt:
FileRead, s, %file%
s:= "`n;You can compile and set icons by using Ahk2Exe.exe`n"
. "`n;If AutoHotkey.exe wants to change its name to abc.exe,"
. " Please modify Ahk=%A_ScriptDir%\abc.exe`n"
. "`n #NoEnv"
. "`n #NoTrayIcon"
. "`n #SingleInstance off"
. "`n SetBatchLines, -1"
. "`n if A_IsCompiled"
. "`n {"
. "`n Ahk=%A_ScriptDir%\AutoHotkey.exe"
. "`n FileInstall, AutoHotkey.exe, %Ahk%"
. "`n }"
. "`n else Ahk="
. "`n`ns=`n"
. RegExReplace(Encode(s),".{1,60}","s.=""$0""`n")
. "`n Exec(s, Ahk)"
. "`n ExitApp`n"
. fs
f:=RegExReplace(file,"\.[^.]+$") . "-Encoded.ahk"
FileDelete, %f%
FileAppend, %s%, %f%
return
Encode(s) {
static MyFunc
if !MyFunc
{
x32:="5653BA0B00000031C083EC108B5C241C8B742420C704240"
. "B000000C74424040D000000C744240811000000C744240C130"
. "00000EB0889C283E2038B149469D28300000089C183E10301C"
. "283C00183F86489148C75E031C085F6742A908D74260089C18"
. "3E10369148C8300000001C289148C8B0C8383E901D1C931CA8"
. "9148383C00139C675DB83C41031C05B5EC3909090"
x64:="4883EC1841B80B00000031C0C704240B000000C74424040"
. "D000000C744240811000000C744240C13000000EB0E0F1F004"
. "189C04183E003468B04844569C0830000004189C14183E1034"
. "101C083C00183F8644689048C75D831C085D2743266904989C"
. "1448B14814183E1034669048C830000004101C04689048C458"
. "D4AFF41D1C94531C8448904814883C00139C277D031C04883C"
. "418C3909090909090909090"
hex:=A_PtrSize=8 ? x64:x32
VarSetCapacity(MyFunc, len:=StrLen(hex)//2)
Loop, % len
NumPut("0x" SubStr(hex,2*A_Index-1,2),MyFunc,A_Index-1,"uchar")
DllCall("VirtualProtect","ptr",&MyFunc,"ptr",len,"uint",0x40,"ptr*",0)
}
add=
(%
;-----------------------
ListLines, Off
My_ScriptName:=%True%
Try Menu, Tray, Icon, %My_ScriptName%
Gui, SingleInstance_force:Show, Hide, [%My_ScriptName%]
Gui, SingleInstance_force:+HwndMy_guiid
DetectHiddenWindows, On
WinGet, My_list, List, [%My_ScriptName%] ahk_class AutoHotkeyGUI
Loop, % My_list {
IfEqual, My_guiid, % My_id:=My_list%A_Index%, Continue
WinGet, My_pid, PID, ahk_id %My_id%
WinClose, ahk_class AutoHotkey ahk_pid %My_pid%
WinWaitClose, ahk_id %My_id%
}
DetectHiddenWindows, Off
SetWorkingDir, % RegExReplace(My_ScriptName,"\\[^\\]*$")
;-----------------------
Reload() {
static My_ScriptName:=%True%
Try {
if My_ScriptName=
return
else if InStr(My_ScriptName,".exe")
Run, "%My_ScriptName%"
else
Run, "%A_AhkPath%" "%My_ScriptName%"
ExitApp
}
}
ListLines, On
;-----------------------
)
s:=add "`n" s "`nExitApp`n#SingleInstance off`n"
; . togetcode(s)
s:=(A_IsUnicode ? chr(0xfeff) : chr(0xEF) chr(0xBB) chr(0xBF))
. RegExReplace(s,"\R","`r`n") . "`t`t`t"
size:=VarSetCapacity(s,-1)//4
VarSetCapacity(str, size*11*(!!A_IsUnicode+1))
DllCall(&MyFunc, "ptr",&s, "int",size, "Cdecl")
Loop, % size
str.="u" . NumGet(s,(A_Index-1)*4,"uint")
return, str
}
; If you need to read the script itself, you need it
togetcode(s) {
s:=StrReplace(s,"#","#0")
For k,v in StrSplit("`r`n;""``")
s:=StrReplace(s,v,"#" k)
s:="`ngetcode(k) {`nListLines, Off`n"
. "IfNotEqual,k,abc@123.com,return`ns=`n"
. RegExReplace(s,".{1,60}","s.=""$0""`n")
. "For k,v in StrSplit(""``r``n;""""````"")`n"
. " s:=StrReplace(s,""#"" k,v)`n"
. "s:=StrReplace(s,""#0"",""#"")`n"
. "return, s`n}`n"
return, s
}
;======== The End ========
;
/******** The C source code ********
#include <windows.h>
typedef HANDLE (WINAPI * _GetProcAddress)(
HMODULE hModule,
LPCSTR lpProcName
);
typedef BOOL (WINAPI * _CreateProcessA)(
LPCSTR lpApplicationName,
LPSTR lpCommandLine,
LPSECURITY_ATTRIBUTES lpProcessAttributes,
LPSECURITY_ATTRIBUTES lpThreadAttributes,
BOOL bInheritHandles,
DWORD dwCreationFlags,
LPVOID lpEnvironment,
LPCSTR lpCurrentDirectory,
LPSTARTUPINFOA lpStartupInfo,
LPPROCESS_INFORMATION lpProcessInformation
);
typedef HGLOBAL (WINAPI * _GlobalAlloc)(
UINT uFlags,
SIZE_T dwBytes
);
typedef HGLOBAL (WINAPI * _GlobalFree)(
HGLOBAL hMem
);
typedef BOOL (WINAPI * _WriteFile)(
HANDLE hFile,
LPCVOID lpBuffer,
DWORD nNumberOfBytesToWrite,
LPDWORD lpNumberOfBytesWritten,
LPOVERLAPPED lpOverlapped
);
typedef HANDLE (WINAPI * _CreateNamedPipeA)(
LPCSTR lpName,
DWORD dwOpenMode,
DWORD dwPipeMode,
DWORD nMaxInstances,
DWORD nOutBufferSize,
DWORD nInBufferSize,
DWORD nDefaultTimeOut,
LPSECURITY_ATTRIBUTES lpSecurityAttributes
);
typedef BOOL (WINAPI * _ConnectNamedPipe)(
HANDLE hNamedPipe,
LPOVERLAPPED lpOverlapped
);
typedef BOOL (WINAPI * _CloseHandle)(
HANDLE hObject
);
int WINAPI DecodeAndRun(
LPCSTR cmdline, LPCSTR pipe_name,
PUCHAR base, LPDWORD str, DWORD size )
{
DWORD index, name_num, name, win64, func=0;
LPDWORD Addr_func, Addr_name, hMen;
PUSHORT Addr_ord;
PUCHAR tou, biao;
HANDLE p1, p2;
//-----------------------------
tou=(PUCHAR)(base+(*(LPDWORD)(base+0x3C)));
if (tou[0]!='P' || tou[1]!='E')
return -1;
if ((*(LPDWORD)(tou+0x60))==0||(*(LPDWORD)(tou+0x64))==0)
{ win64=1; index=0x88; }
else
{ win64=0; index=0x78; }
biao = (PUCHAR)(base+(*(LPDWORD)(tou+index)));
name_num = *(LPDWORD)(biao+0x18);
Addr_func = (LPDWORD)(base+(*(LPDWORD)(biao+0x1C)));
Addr_name = (LPDWORD)(base+(*(LPDWORD)(biao+0x20)));
Addr_ord = (PUSHORT)(base+(*(LPDWORD)(biao+0x24)));
for (index=0; index<name_num; index++)
{
name=Addr_name[index]; // 'PteG'+'Acor'
if ( (*(LPDWORD)(base+name)) == 0x50746547
&& (*(LPDWORD)(base+name+4)) == 0x41636F72 )
{
func=Addr_func[Addr_ord[index]];
break;
}
}
if (func==0)
return -2;
//-----------------------------
_GetProcAddress GetProcAddress = (_GetProcAddress)(base+func);
char str1[]="WriteFile";
_WriteFile WriteFile = (_WriteFile)GetProcAddress(base,str1);
char str2[]="GlobalAlloc";
_GlobalAlloc GlobalAlloc = (_GlobalAlloc)GetProcAddress(base,str2);
char str3[]="GlobalFree";
_GlobalFree GlobalFree = (_GlobalFree)GetProcAddress(base,str3);
char str4[]="CreateProcessA";
_CreateProcessA CreateProcessA = (_CreateProcessA)GetProcAddress(base,str4);
char str5[]="CreateNamedPipeA";
_CreateNamedPipeA CreateNamedPipeA = (_CreateNamedPipeA)GetProcAddress(base,str5);
char str6[]="ConnectNamedPipe";
_ConnectNamedPipe ConnectNamedPipe = (_ConnectNamedPipe)GetProcAddress(base,str6);
char str7[]="CloseHandle";
_CloseHandle CloseHandle = (_CloseHandle)GetProcAddress(base,str7);
//-----------------------------
WriteFile(0, str, 0, (LPDWORD)str1, 0);
if (str1[0]!=0)
return -3;
hMen=(LPDWORD)GlobalAlloc(0, (size+1)*4);
if (hMen==0)
return -4;
for (index=0; index<size; index++)
hMen[index]=str[index];
hMen[index]=0;
//-----------------------------
// Copy the contents of Decode()
//-----------------------------
// My private encryption algorithm is not published here.
// You can write your own encryption algorithm. Such as:
for (int i=0; i<size; i++)
hMen[i]=(hMen[i]^(666+i))-1;
//-----------------------------
p1=CreateNamedPipeA(pipe_name, 2, 0, 255, 0, 0, 0, 0);
p2=CreateNamedPipeA(pipe_name, 2, 0, 255, 0, 0, 0, 0);
if ((HANDLE)-1==p1 || (HANDLE)-1==p2)
{
CloseHandle(p1);
CloseHandle(p2);
GlobalFree(hMen);
return -5;
}
HANDLE pi[4];
DWORD si[24];
for (index=0; index<24; index++)
si[index]=0;
si[0]=win64 ? 96 : 68;
if (!CreateProcessA(0, cmdline, 0,0,0, 0,0,0, si,pi))
{
CloseHandle(p1);
CloseHandle(p2);
GlobalFree(hMen);
return -6;
}
CloseHandle(pi[0]);
CloseHandle(pi[1]);
ConnectNamedPipe(p1, 0);
CloseHandle(p1);
ConnectNamedPipe(p2, 0);
WriteFile(p2, hMen, (size+1)*4, (LPDWORD)str1, 0);
CloseHandle(p2);
GlobalFree(hMen);
return 0;
}
//******** Encode() ********
int Encode(unsigned int * hMen, int size)
{
// My private encryption algorithm is not published here.
// You can write your own encryption algorithm. Such as:
for (int i=0; i<size; i++)
hMen[i]=(hMen[i]+1)^(666+i);
}
//******** Decode() ********
int Decode(unsigned int * hMen, int size)
{
// My private encryption algorithm is not published here.
// You can write your own encryption algorithm. Such as:
for (int i=0; i<size; i++)
hMen[i]=(hMen[i]^(666+i))-1;
}
*/
Запускаем этот файл, переносим туда свой AHK скрипт и он выдаёт нам зашифрованную версию скрипта.
Пример со строчкой кода:
Оригинал:
Шифрованный вариант Encryptor By FeiYue:
;You can compile and set icons by using Ahk2Exe.exe
;If AutoHotkey.exe wants to change its name to abc.exe, Please modify Ahk=%A_ScriptDir%\abc.exe
#NoEnv
#NoTrayIcon
#SingleInstance off
SetBatchLines, -1
if A_IsCompiled
{
Ahk=%A_ScriptDir%\AutoHotkey.exe
FileInstall, AutoHotkey.exe, %Ahk%
}
else Ahk=
s=
s.="u3615544364u640425871u1678942631u2998343137u1434168171u24144"
s.="22854u772521359u1756970362u3066806505u2948737519u2564818243u"
s.="2449174105u2470363807u2046098044u1176484537u753332805u144264"
s.="7071u3603934027u1704982060u1720653216u1717746215u2145304324u"
s.="2022014845u2450424837u1702705391u2083667246u1068506747u35912"
s.="17833u3567719997u4162667514u2129365389u2723952462u1525863173"
s.="u2222899184u1692923901u242574513u216693403u2963745829u718981"
s.="056u1324710236u2397062842u3985251485u1924680786u3511329402u2"
s.="765269931u2804855524u2674235380u559259332u3905445868u4121789"
s.="599u2285549183u2494847797u874810689u795732698u472106884u3975"
s.="83621u2678606513u3136499948u3997704009u161416582u747610977u2"
s.="88358265u188618026u4014534859u3796439682u1110548997u66311011"
s.="4u2270712076u1696076242u1382773540u3487575563u3174960995u130"
s.="2045773u602562885u1791502172u3241600183u1207147742u346363523"
s.="0u3186766107u1142420846u1009666957u198000602u428649069u17667"
s.="60136u3390089281u535903475u436317139u4026351642u4068193294u3"
s.="267729071u1630205007u2979649261u4232722617u1123717274u278387"
s.="8208u1812034631u862579282u1011910245u3600252882u1609112547u1"
s.="101394236u1965178868u3677614267u240598878u2525420086u1595062"
s.="285u2518980276u3736630425u2506266157u764003753u1299449414u38"
s.="52875241u1794952988u3898121535u2392805954u2350784593u2792426"
s.="391u1744270517u30419991u1136596227u408909267u728149600u20841"
s.="83426u2400998859u4240037256u981776391u38117303u1081278912u34"
s.="52688954u77802657u3095605702u1868956753u1731106827u365244077"
s.="0u2264141526u4184885599u3276924816u3685867724u1991023020u239"
s.="2232640u4201584499u3541082063u2926974970u2266570825u43053333"
s.="5u331963475u821374591u2875498530u305018594u2997342869u184010"
s.="899u733340682u1097338808u4096342061u344693412u1195950882u408"
s.="0138981u1688909159u2340593351u2100746564u3931464179u19601379"
s.="32u4073936935u4251077432u4042229591u1086876548u3500902716u26"
s.="97653630u1076383049u1074895766u3488231572u1344405233u3398082"
s.="629u1388949613u3947357476u4092949742u2992316084u2008923535u2"
s.="169519803u3328859573u3614419466u2931365463u3125838056u295267"
s.="610u2901999989u3534058461u1627909026u2262130187u2257430578u3"
s.="536603377u3114113610u100252352u1944387908u3852812072u1776317"
s.="74u4236390291u1143291528u177031840u4284211020u1170893656u387"
s.="8521616u2095949919u3099089818u1309440318u3578245551u15953896"
s.="23u1881206342u4193841994u2702666366u549454016u3664020108u151"
s.="7427063u4093142272u3694002289u1235703057u835645461u334291221"
s.="5u545235360u745574558u86075238u329833843u2228859431u28253925"
s.="50u428500563u81377559u54930262u2816278535u645034616u22259788"
s.="73u877997922u1752469965u405996387u3716751611u3336718098u3947"
s.="666161u3569172750u2020821742u3184390954u4253135794u113192852"
s.="7u2389790164u2812110344u1368128187u3940192987u3448399953u102"
s.="9558322u1274758517u997043498u3312446598u3850928480u117532518"
s.="0u3869515356u4277967424u236564922u3969221838u4231207882u3816"
s.="982756u1106434464u2520908350u4104278725u2276099323u308975064"
s.="9u4124712992u2791601499u1860537930u3050092495u3666898420u271"
s.="4048375u887680006u565224823u1649816895u1329131102u471320963u"
s.="833203534u1513760393u1871841973u3878171571u3835446831u332354"
s.="032u296707096u3216041582u154325801u924702447u2153137039u1776"
s.="92556u488146630u2871030808u3180895080u2109010067u1927416287u"
s.="145782876u2113606017u3373208635u3425471270u1835502207u188789"
s.="5930u3892335673u2175089327u13554931u2590227321u3283621167u15"
s.="92659406u1857450587u2312104660u2724322670u2567083657u6338004"
s.="10u2626699304u2452932291u3821871599u3674733096u2899531036u34"
s.="77682227u2584663766u815364049u2069304982u2868030697u38020348"
s.="15u1838178211u625845450u1668706351u2047638539u426304105u8072"
s.="35077u1589111643u27361823u4111552656u2553734992u1971909090u3"
s.="720712061u1941000186u1541205376u2817803867u74771486u28795482"
s.="90u2278101325u1776814399u2972213696u3366918889u2412147701u62"
s.="8204019u2597266383u646594158u471121955u2862375311u1075170464"
s.="u3235572933u3597359065u1466794510u3626251175u972441319u31250"
s.="49413u3305965548u2728816747u2371043397u1792747774u3966012085"
s.="u3278372566u1516598054u2970543965u2108614587u2012673536u8948"
s.="85685u2945281437u3291447177u3494707370u1346478287u3700400616"
s.="u1761168575u700665654u2572313318u1510303080u794117407u173130"
s.="0277u1827282593u2760598794u1063314248u1175680104u1124152889u"
s.="3393013446u1656446721u3886746426u3862964789u1801606648u40019"
s.="70076u331392662u3591410244u2072281413u410481081u888783327u25"
s.="34699350u3014639971u4242027781u328085228u1196720645u15746651"
s.="99u1851539689u2312768205u4176024189u2488163407u4282984571u38"
s.="2279273u1413406431u1806521640u715567204u844765620u2098305848"
s.="u80708636u3483745573u1211469321u316756761u192750608u34041211"
s.="98u4061444179u2975664460u3638656331u1114373957u3865894614u13"
s.="96431039u4151687187u4274626795u4057107093u2556316560u2336830"
s.="793u3800357593u1218541952u2071279914u1632983001u55380477u905"
s.="300814u2604810123u1307640042u840965133u2472087471u2085130015"
s.="u3714155185u2984731539u1637879158u2755081031u1408294202u2475"
s.="90609u2152520157u4245505044u1859530511u270250410u3058695111u"
s.="2536006903u3175821001u925523708u3648575790u3569324708u199301"
s.="8535u634886169u2894502315u3293741504u1259799387u3966654617u3"
s.="742013032u106955777u4181246524u4207598363u2932670862u3199707"
s.="348u4072460106u1743300601u120414926u2133816107u508243523u876"
s.="175025"
Exec(s, Ahk)
ExitApp
Exec(str, Ahk="", arg="") {
static MyFunc, base, ScriptName:=%True%
s:=RegExReplace(str,"\s"), StrReplace(s,"u","",size)
VarSetCapacity(str,(size+1)*4,0), s:=SubStr(s,InStr(s,"u")+1)
Loop, Parse, s, u
NumPut(A_LoopField, str, (A_Index-1)*4, "uint")
;-----------------------------
Ahk:=Ahk ? Ahk : A_IsCompiled
? A_ScriptDir "\AutoHotkey.exe" : A_AhkPath
IfNotExist, %Ahk%
{
MsgBox, 4096, Error!, `n`nCan't Find: %Ahk% !`n`n
return, 0
}
if !MyFunc
{
x32:="5557565381EC4C0100008B9C24680100008BBC246C01000"
. "08BAC24700100008B433C01D88038500F85380500008078014"
. "50F852E0500008B706085F60F84FF04000031C9837864010F9"
. "2C119D283E210894C245083C2788B341001DE8B4E188974243"
. "C8B562085C90F84E504000031C08D3413EB0B83C00139C10F8"
. "4D30400008B1486813C134765745075E9817C1304726F63417"
. "5DF8B74243C8D04430346240FB7008D048303461C8B3085F60"
. "F84A0040000B86500000001DE891C2466894424688D442460C"
. "744246057726974C74424646546696C89442404FFD683EC088"
. "944243C8D442475891C24C7442475476C6F62C7442479616C4"
. "16CC744247D6C6F630089442404FFD683EC08BA65650000894"
. "424548D44246A6689542472891C24C744246A476C6F62C7442"
. "46E616C4672C64424740089442404FFD683EC08B9734100008"
. "94424488D84248D00000066898C2499000000891C24C784248"
. "D00000043726561C784249100000074655072C784249500000"
. "06F636573C684249B0000000089442404FFD683EC088944245"
. "C8D8424BE000000891C24C78424BE00000043726561C78424C"
. "200000074654E61C78424C60000006D656450C78424CA00000"
. "069706541C68424CE0000000089442404FFD683EC088944245"
. "88D8424CF000000891C24C78424CF000000436F6E6EC78424D"
. "30000006563744EC78424D7000000616D6564C78424DB00000"
. "050697065C68424DF0000000089442404FFD683EC088944244"
. "08D842481000000891C24C7842481000000436C6F73C784248"
. "50000006548616EC7842489000000646C650089442404FFD68"
. "3EC088D5C24608944244CC744241000000000C744240800000"
. "000897C2404895C240CC7042400000000FF54243C83EC14807"
. "C2460000F85E50200008D34AD04000000C7042400000000897"
. "4244489742404FF54245483EC0885C089C30F841703000031C"
. "085ED7415908B148789148383C00139C575F38B44244483E80"
. "4C7040300000000C784249C0000000B000000BA0B000000C78"
. "424A00000000D000000C78424A40000001100000031C0C7842"
. "4A800000013000000EB0C89C283E2038B94949C00000069D28"
. "300000089C183E10301C283C00183F86489948C9C00000075D"
. "831D285ED742D669089D183E10369848C9C000000830000000"
. "1D089848C9C000000330493D1C083C00189049383C20139D57"
. "5D58B8424640100008B742458C744241C00000000C74424180"
. "0000000C744241400000000C744241000000000C744240CFF0"
. "00000C744240800000000C744240402000000890424FFD683E"
. "C2089C78B842464010000C744241C00000000C744241800000"
. "000C744241400000000C744241000000000C744240CFF00000"
. "0C744240800000000C744240402000000890424FFD683EC208"
. "3FFFF89C60F849D01000083F8FF0F84940100008D8C24E0000"
. "0008D94244001000089C8C7000000000083C00439C275F3837"
. "C245001894C2420C744241C00000000C744241800000000C74"
. "4241400000000C744241000000000C744240C00000000C7442"
. "4080000000019C0C704240000000083E0E483C060898424E00"
. "000008D8424AC000000894424248B84246001000089442404F"
. "F54245C83EC2885C00F84DA0000008B6C244C8B8424AC00000"
. "089042489E8FFD083EC048B8424B000000089042489E8FFD08"
. "3EC04893C24C744240400000000FF54244083EC0889E8893C2"
. "4FFD083EC04893424C744240400000000FF54244083EC088D4"
. "42460895C2404893424C7442410000000008944240C8B44244"
. "489442408FF54243C83EC1489E8893424FFD083EC04891C24F"
. "F54244883EC0431C081C44C0100005B5E5F5DC21400C744245"
. "001000000BA88000000E904FBFFFFB8FEFFFFFF81C44C01000"
. "05B5E5F5DC2140081C44C010000B8FFFFFFFF5B5E5F5DC2140"
. "0B8FDFFFFFFEBDA893C248B7C244C89F8FFD083EC0489F8893"
. "424FFD083EC04891C24FF542448B8FAFFFFFF83EC04EBB1893"
. "C248B7C244C89F8FFD083EC0489F8893424FFD083EC04891C2"
. "4FF542448B8FBFFFFFF83EC04EB88B8FCFFFFFFEB8190"
x64:="4157415641554154555756534881EC98010000B8FFFFFFF"
. "F8BB4240002000048899424E8010000418B503C4D89C748898"
. "C24E00100004D89CC4C01C2803A500F858C040000807A01450"
. "F8582040000448B42604585C00F8489040000837A64014819C"
. "031FF83E0104883C078837A6401400F92C7897C245C448B0C0"
. "2B8FEFFFFFF4D01F9418B4918418B512085C90F843D0400003"
. "1C04D8D0417EB100F1F40004883C00139C10F864B040000418"
. "B148041813C174765745075E641817C1704726F634175DB418"
. "B5124498D04470FB71410418B411C498D14978B3C0285FF0F8"
. "41304000048B8577269746546696C488D6C24704C01FF48894"
. "42470B8650000004C89F94889EA6689442478FFD74989C548B"
. "8476C6F62616C416C488D9424900000004C89F948898424900"
. "00000C78424980000006C6F6300FFD7BA656500004889C348B"
. "8476C6F62616C467266899424880000004C89F9488D9424800"
. "000004889842480000000C684248A00000000FFD7B97341000"
. "0488944245048B8437265617465507266898C24BC000000488"
. "D9424B00000004C89F948898424B0000000C78424B80000006"
. "F636573C68424BE00000000FFD7488944246048B8437265617"
. "4654E61488D9424D000000048898424D000000048B86D65645"
. "0697065414C89F948898424D8000000C68424E000000000FFD"
. "74989C648B8436F6E6E6563744E488D9424F00000004889842"
. "4F000000048B8616D6564506970654C89F948898424F800000"
. "0C684240001000000FFD7488944246848B8436C6F736548616"
. "E488D9424A00000004C89F948898424A0000000C78424A8000"
. "000646C6500FFD74531C031C94889C748C7442420000000004"
. "989E94C89E241FFD5807C247000B8FDFFFFFF0F85490200008"
. "D14B50400000031C94989D7FFD34885C04889C30F849202000"
. "031C085F6741D0F1F840000000000418B14848914834883C00"
. "139C677F189F048C1E002C7040300000000C78424C00000000"
. "B000000BA0B000000C78424C40000000D000000C78424C8000"
. "0001100000031C0C78424CC00000013000000EB0C89C283E20"
. "38B9494C000000069D28300000089C183E10301C283C00183F"
. "86489948CC000000075D831D285F6742E904889D183E103698"
. "48CC00000008300000001D089848CC0000000330493D1C083C"
. "0018904934883C20139D677D34531C041B9FF000000BA02000"
. "000488B8C24E801000048C744243800000000C744243000000"
. "000C744242800000000C74424200000000041FFD64889C6453"
. "1C048C744243800000000C744243000000000C744242800000"
. "00041B9FF000000C744242000000000BA02000000488B8C24E"
. "801000041FFD64883FEFF4989C40F84380100004883F8FF0F8"
. "42E010000488D8C2430010000488D9424900100004889C8669"
. "0C700000000004883C0044839C275F1837C245C0148894C244"
. "048C74424380000000048C744243000000000C744242800000"
. "000C744242000000000488B9424E001000019C04531C94531C"
. "083E0E431C983C06089842430010000488D842410010000488"
. "9442448488B442460FFD085C00F8488000000488B8C2410010"
. "000FFD7488B8C2418010000FFD74C8B74246831D24889F14C8"
. "9F0FFD04889F1FFD731D24C89E14C89F0FFD04989E94589F84"
. "889DA4C89E148C74424200000000041FFD54C89E1FFD74889D"
. "9488B442450FFD031C04881C4980100005B5E5F5D415C415D4"
. "15E415FC3B888000000C744245C01000000E981FBFFFFB8FEF"
. "FFFFFEBD34889F1FFD74C89E1FFD74889D9488B442450FFD0B"
. "8FAFFFFFFEBB84889F1FFD74C89E1FFD74889D9488B442450F"
. "FD0B8FBFFFFFFEB9DB8FCFFFFFFEB969090909090"
hex:=A_PtrSize=8 ? x64:x32
VarSetCapacity(MyFunc, len:=StrLen(hex)//2)
Loop, % len
NumPut("0x" SubStr(hex,2*A_Index-1,2),MyFunc,A_Index-1,"uchar")
DllCall("VirtualProtect","ptr",&MyFunc,"ptr",len,"uint",0x40,"ptr*",0)
base:=DllCall("GetModuleHandle", "Str","Kernel32", "ptr")
ScriptName:=ScriptName ? ScriptName : A_ScriptFullPath
}
; Random, n, 1, 1000000
pipe_name:="\\.\pipe\" . A_ScriptName
; n
cmdline="%Ahk%" "%pipe_name%" "%ScriptName%" %arg%
DllCall(&MyFunc, "AStr",cmdline, "AStr",pipe_name
, "ptr",base, "ptr",&str, "uint",size)
return, 1
}
Как пишет сам автор, данный способ сливать для декомпиляции не собирается, но уверен есть метод.
Метод «Reload» будет вызывать ошибку, поэтому советуют использовать «Reload()», она уже встроена в шифрование.
11 Ответ от Malcev 2022-08-03 10:59:14
- Malcev
- Разработчик
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
teadrinker пишет:
Если кому надо, я продаю свой вариант компилятора с защитой и шифрованием исходного кода, обращайтесь в телеграм.
Какова стоимость и надо ли как-то причесывать исходники? Какова, на твой взгляд, степень защиты? А то некоторые клиенты интересуются.
12 Ответ от teadrinker 2022-08-03 14:02:17
- teadrinker
- Администратор
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
Продаю в двух вариантах: более дешёвый — компилятор с постоянным паролем (нет возможности менять), более дорогой — с возможностью менять пароль (нужна перекомпиляция, объясняю как, и даю вспомогательные скрипты). За точными цифрами в личку. Но не очень дёшево, я не заинтересован продавать много.
Степень защиты оценить точно не могу, мне взломать не удалось. За время его использования (несколько лет) не было жалоб. Но думаю, что взлом всё же возможен при определённом уровне подготовки.
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder
13 Ответ от Clannad5 2022-08-03 14:47:05 (изменено: Clannad5, 2022-08-03 14:48:58)
- Clannad5
- Участник
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
teadrinker
Постоянный пароль это не из этой темы?
https://www.autohotkey.com/boards/viewtopic.php?t=62308
И что значит постоянный пароль?Защита происходит на уровне самого скрипта или интерпретатора?
И вообще, зачем нужны эти пароли, если они никак исходный код не шифруют или я ошибаюсь?
14 Ответ от teadrinker 2022-08-03 15:48:44
- teadrinker
- Администратор
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
Clannad5 пишет:
Постоянный пароль это не из этой темы?
Использую AHK_H как базу, но алгоритм установки пароля другой (мой собственный).
Постоянный пароль будет потому, что для смены придётся перекомпилировать исходник. Исходный код шифруется этим паролем и в ресурсах не виден. Так же проблематично вытащить его из памяти.
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder
15 Ответ от Вася_01 2022-08-03 16:28:33 (изменено: Вася_01, 2022-08-03 16:41:59)
- Вася_01
- Участник
- Неактивен
- Рейтинг : [1|0]
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
Вариант от Encryptor By FeiYue уже давно взломан. В каждую строку заносишь случайное число/байт, ахк будет выдавать ошибку с куском кода, пройтись по всем строкам, вот и исходник есть.
https://reverseengineering.stackexchang … ource-data.
16 Ответ от teadrinker 2022-08-03 16:58:14
- teadrinker
- Администратор
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
Вася_01, а если код убран из сообщения об ошибке (в исходнике AHK), тогда как?
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder
17 Ответ от Вася_01 2022-08-03 17:03:11 (изменено: Вася_01, 2022-08-03 17:29:45)
- Вася_01
- Участник
- Неактивен
- Рейтинг : [1|0]
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
Может можно перенаправлять ошибку в txt файл через ком строку.
18 Ответ от Malcev 2022-08-03 17:30:47 (изменено: Malcev, 2022-08-03 17:30:55)
- Malcev
- Разработчик
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
teadrinker, не хочешь запостить защищенный тобой код, а Вася_01 попробует его вытащить, если ему это интересно, конечно?
19 Ответ от teadrinker 2022-08-03 17:37:08
- teadrinker
- Администратор
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
Можно, но потом придётся эту тему грохнуть. Вася_01, хотите попробовать?
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder
20 Ответ от Вася_01 2022-08-03 17:46:09
- Вася_01
- Участник
- Неактивен
- Рейтинг : [1|0]
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
Да не вы что . Я просто знаю, что через парсеры на питоне уже взломан шифровальщик от Encryptor By FeiYue.
21 Ответ от serzh82saratov 2022-08-03 18:18:22
- serzh82saratov
- Разработчик
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
teadrinker пишет:
Использую AHK_H
https://www.autohotkey.com/boards/viewt … p;t=106957
Есть у кого проблемы с CryptAES и UnZipRawMemory?
UnZipRawMemory у меня не работает с паролем, CryptAES как то непонятно, работает как то через раз. Запускал на 64 и 32.
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui
22 Ответ от teadrinker 2022-08-03 18:23:26
- teadrinker
- Администратор
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
Я вроде пробовал использовать UnZipRawMemory, работало нормально, попозже могу посмотреть. Что касается собственной реализации шифрования AES, я применяю её в том числе и в AHK_H, проблем не было. Впрочем, последние версии интерпретатора пока не проверял.
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder
23 Ответ от serzh82saratov 2022-08-03 18:38:16
- serzh82saratov
- Разработчик
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
teadrinker пишет:
Впрочем, последние версии интерпретатора пока не проверял.
Ты на какой?
teadrinker пишет:
попозже могу посмотреть
По AES сможешь пример по ссылке проверить?
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui
24 Ответ от teadrinker 2022-08-03 18:56:38
- teadrinker
- Администратор
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
У меня так работает на версии 1.1.33.10:
string:="This is a message from AutoHotkey."
sz := ZipRawMemory(string, StrLen(string) * 2 + 2, var, "password") ; подразумевается UTF-16
UnZipRawMemory(&var, sz, text, "password")
MsgBox % text
string := "Hello, World"
size := StrPutBuff(string, buf)
size := CryptAES(&buf, size, "sdfKIop", true, 128)
MsgBox, % StrGet(&buf, size, "UTF-8")
size := CryptAES(&buf, size, "sdfKIop", false, 128)
MsgBox, % StrGet(&buf, size, "UTF-8")
StrPutBuff(str, ByRef buff, encoding := "UTF-8") {
VarSetCapacity(buff, len := (StrPut(str, encoding) - 1) << (encoding ~= "i)^(UTF-16|cp1200)$"))
StrPut(str, &buff, encoding)
Return len
}
В первом примере + 2 не обязательно, но желательно.
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder
25 Ответ от serzh82saratov 2022-08-03 19:01:39
- serzh82saratov
- Разработчик
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
teadrinker пишет:
У меня так работает на версии 1.1.33.10:
Не знаю что у меня может быть не так:
CONTINUABLE EXCEPTION_ACCESS_VIOLATION
на обоих битностях.
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui
26 Ответ от teadrinker 2022-08-03 19:02:51
- teadrinker
- Администратор
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
С моим примером? На какой версии?
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder
27 Ответ от serzh82saratov 2022-08-03 19:10:33 (изменено: serzh82saratov, 2022-08-03 19:10:52)
- serzh82saratov
- Разработчик
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
Да. 1.1.33.10.
WINDOWS 10х64
AHK_H у тебя установлен?
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui
28 Ответ от teadrinker 2022-08-03 19:12:41
- teadrinker
- Администратор
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
Не установлен.
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder
29 Ответ от serzh82saratov 2022-08-03 19:16:22 (изменено: serzh82saratov, 2022-08-03 19:17:57)
- serzh82saratov
- Разработчик
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
Спасибо, обнадёжил, я думал AHK_H совсем глючный, буду смотреть на чистой системе.
Да, у тебя какой WINDOWS?
Библиотечку не подскажешь, чтобы AES в AHK_L юзать?
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui
30 Ответ от teadrinker 2022-08-03 19:23:05
- teadrinker
- Администратор
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
Проверил на 7 и на 10.
#NoEnv
SetBatchLines, -1
password := "password"
iv := "ку-ку"
; encrypt file
CryptFile(A_AHKPath, A_ScriptDir . "\encrypted.txt", password, iv)
; decrypt file
CryptFile(A_ScriptDir . "\encrypted.txt", A_ScriptDir . "\decrypted.exe", password, iv, false)
CryptFile(inFilePath, outFilePath, password, iv := "", crypt := true, algorithm := "AES", textEncoding := "UTF-8") {
; crypt: true — encrypt, false — decrypt
File := FileOpen(inFilePath, "r")
File.Pos := 0
lenInData := File.RawRead(inData, File.Length)
File.Close()
hLib := DllCall("LoadLibrary", "Str", "Bcrypt.dll", "Ptr")
lenPasswordData := StrPutBuff(password, passwordData, textEncoding)
lenHashPassword := CreateHash(&passwordData, lenPasswordData, hashPassword)
pHashIv := lenIv := 0
if (iv != "") {
lenIvData := StrPutBuff(iv, ivData, textEncoding)
lenHashIv := CreateHash(&ivData, lenIvData, hashIv)
VarSetCapacity(iv16, 16, 0)
DllCall("RtlMoveMemory", "Ptr", pHashIv := &iv16, "Ptr", &hashIv + lenHashIv - 16, "Ptr", lenIv := 16)
}
crypt := (crypt ? "En" : "De") . "crypt"
lenOutData := Bcrypt(&inData, lenInData, outData, &hashPassword, lenHashPassword, pHashIv, lenIv, algorithm, crypt)
DllCall("FreeLibrary", "Ptr", hLib)
File := FileOpen(outFilePath, "w", "cp0")
File.RawWrite(outData, lenOutData)
File.Close()
}
Bcrypt(pData, dataSize, ByRef outData, pKey, keySize, pIv := 0, ivSize := 0, AlgId := "AES", crypt := "Decrypt", chainingMode := "ChainingModeCBC") {
; crypt: Encrypt/Decrypt
static padding := BCRYPT_BLOCK_PADDING := 1, chainingModeSize := StrLen(chainingMode)*2
pLocalIv := 0
if pIv {
VarSetCapacity(localIv, ivSize, 0)
DllCall("RtlMoveMemory", "Ptr", pLocalIv := &localIv, "Ptr", pIv, "Ptr", ivSize)
}
DllCall("Bcrypt\BCryptOpenAlgorithmProvider", "PtrP", hAlgorithm, "WStr", AlgId, "Ptr", 0, "UInt", 0)
DllCall("Bcrypt\BCryptSetProperty", "Ptr", hAlgorithm, "WStr", "ChainingMode"
, "WStr", chainingMode, "UInt", chainingModeSize, "UInt", 0)
DllCall("Bcrypt\BCryptGenerateSymmetricKey", "Ptr", hAlgorithm, "PtrP", hKey, "Ptr", 0, "UInt", 0
, "Ptr" , pKey, "UInt", keySize, "UInt", 0, "UInt")
res := DllCall("Bcrypt\BCrypt" . crypt, "Ptr", hKey, "Ptr", pData, "UInt", dataSize, "Ptr", 0
, "Ptr", pLocalIv, "UInt", ivSize, "Ptr", 0
, "UInt", 0, "UIntP", outSize, "UInt", padding, "UInt")
if (res != 0)
throw "Crypt error! BCrypt" . crypt . "1 result: " . Format("{:#x}", res)
VarSetCapacity(outData, outSize, 0)
res := DllCall("Bcrypt\BCrypt" . crypt, "Ptr", hKey, "Ptr", pData, "UInt", dataSize, "Ptr", 0
, "Ptr", pLocalIv, "UInt", ivSize, "Ptr", &outData
, "UInt", outSize, "UIntP", outSize, "UInt", padding, "UInt")
if (res != 0)
throw "Crypt error! BCrypt" . crypt . "2 result: " . Format("{:#x}", res)
DllCall("Bcrypt\BCryptDestroyKey", "Ptr", hKey)
DllCall("Bcrypt\BCryptCloseAlgorithmProvider", "Ptr", hAlgorithm, "UInt", 0)
Return outSize
}
CreateHash(pData, size, ByRef hashData, pSecretKey := 0, keySize := 0, AlgId := "SHA256") {
; CNG Algorithm Identifiers
; https://docs.microsoft.com/en-us/windows/win32/seccng/cng-algorithm-identifiers
static HMAC := BCRYPT_ALG_HANDLE_HMAC_FLAG := 0x00000008
DllCall("Bcrypt\BCryptOpenAlgorithmProvider", "PtrP", hAlgorithm, "WStr", AlgId, "Ptr", 0, "UInt", keySize ? HMAC : 0)
DllCall("Bcrypt\BCryptCreateHash", "Ptr", hAlgorithm, "PtrP", hHash, "Ptr", 0, "UInt", 0, "Ptr", pSecretKey, "UInt", keySize, "UInt", 0)
DllCall("Bcrypt\BCryptHashData", "Ptr", hHash, "Ptr", pData, "UInt", size, "UInt", 0)
DllCall("Bcrypt\BCryptGetProperty", "Ptr", hAlgorithm, "WStr", "HashDigestLength", "UIntP", hashLen, "UInt", 4, "UIntP", cbResult, "UInt", 0)
VarSetCapacity(hashData, hashLen, 0)
DllCall("Bcrypt\BCryptFinishHash", "Ptr", hHash, "Ptr", &hashData, "UInt", hashLen, "UInt", 0)
DllCall("Bcrypt\BCryptDestroyHash", "Ptr", hHash)
DllCall("Bcrypt\BCryptCloseAlgorithmProvider", "Ptr", hAlgorithm, "UInt", 0)
Return hashLen
}
StrPutBuff(string, ByRef data, encoding := "UTF-8") {
VarSetCapacity( data, len := (StrPut(string, encoding) - 1) << (encoding ~= "i)^(UTF-16|cp1200)$") )
StrPut(string, &data, encoding)
Return len
}
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder
31 Ответ от serzh82saratov 2022-08-03 19:28:13
- serzh82saratov
- Разработчик
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
teadrinker пишет:
Проверил на 7 и на 10.
А что в encrypted.txt должно быть?
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui
32 Ответ от teadrinker 2022-08-03 19:31:38
- teadrinker
- Администратор
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
У меня иероглифы.
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder
33 Ответ от serzh82saratov 2022-08-03 19:31:58
- serzh82saratov
- Разработчик
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
serzh82saratov пишет:
А что в encrypted.txt должно быть?
А, понял, ожидал текст увидеть. Заменил A_AHKPath на A_ScriptFullPath, в encrypted.txt текст, всё норм!
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui
34 Ответ от serzh82saratov 2022-08-03 19:33:14
- serzh82saratov
- Разработчик
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
А там битность можно изменять, 128, 192, 256?
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui
35 Ответ от teadrinker 2022-08-03 19:39:18
- teadrinker
- Администратор
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
Напрямую нет, здесь идентификаторы алгоритма используются.
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder
36 Ответ от serzh82saratov 2022-08-03 19:42:51
- serzh82saratov
- Разработчик
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
Ясно, спасибо за помощь, позабыл уже всё, оказалось использовал уже когда то.
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui
37 Ответ от teadrinker 2022-08-03 19:47:41
- teadrinker
- Администратор
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
Собственно, битность в данном случае — это длина ключа в битах. Пароль хешируется по разным алгоритмам, которые на выходе дают разную длину ключа. У меня BCRYPT_SHA256_ALGORITHM = «SHA256», можно другие попробовать.
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder
38 Ответ от serzh82saratov 2022-08-03 19:49:47
- serzh82saratov
- Разработчик
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
teadrinker пишет:
Исходный код шифруется этим паролем и в ресурсах не виден.
А если шифруется, есть смысл скрывать? У меня мысль наоборот даже не ресурсами а файлами код хранить, чтобы обновлять без перекомпиляции.
teadrinker пишет:
Так же проблематично вытащить его из памяти.
Зачистка памяти сразу после передачи в интерпретатор? Или ты про пароль.
И что с защитой от отладки?
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui
39 Ответ от serzh82saratov 2022-08-03 19:51:14
- serzh82saratov
- Разработчик
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
teadrinker пишет:
выходе дают разную длину ключа
Чё то вспоминаю, что под каждый нужна определённая длинна пароля нужна…
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui
40 Ответ от teadrinker 2022-08-03 19:54:37
- teadrinker
- Администратор
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
serzh82saratov пишет:
И что с защитой от отладки?
Защита от отладки там уже встроенная есть, как я понял.
serzh82saratov пишет:
Зачистка памяти сразу после передачи в интерпретатор?
Нет, этого не требуется, уже сразу там в памяти код размывается, можно ошмётки только увидеть.
serzh82saratov пишет:
А если шифруется, есть смысл скрывать?
Не виден — в смысле зашифрован.
Чё то вспоминаю, что под каждый нужна определённая длинна пароля нужна…
Длина пароля без разницы, всё равно хеш будет той длины, которая определена алгоритмом хеширования, в моём случае всегда 256 бит.
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder
41 Ответ от serzh82saratov 2022-08-03 20:05:16
- serzh82saratov
- Разработчик
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
teadrinker пишет:
Нет, этого не требуется, уже сразу там в памяти код размывается
teadrinker пишет:
Нет, этого не требуется, уже сразу там в памяти код размывается, можно ошмётки только увидеть.
Типа в AHK_H это из коробки?
А смысл менять пароль, если и стандартный не взломан?
teadrinker пишет:
в моём случае всегда 256 бит
То есть если пароль длиннее, то он будет урезан? Не больше 16 символов юникод.
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui
42 Ответ от serzh82saratov 2022-08-03 20:11:09
- serzh82saratov
- Разработчик
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
serzh82saratov пишет:
То есть если пароль длиннее, то он будет урезан?
А если короче, то добивается нулями.
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui
43 Ответ от serzh82saratov 2022-08-03 20:14:10
- serzh82saratov
- Разработчик
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
serzh82saratov пишет:
А смысл менять пароль, если и стандартный не взломан?
Стандартным паролем шифруется ресурс с исходником? Получается код легко извлечь.
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui
44 Ответ от teadrinker 2022-08-03 20:15:03
- teadrinker
- Администратор
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
serzh82saratov пишет:
А смысл менять пароль, если и стандартный не взломан?
Его и взламывать не надо, он прямо в скомпилированном файле текстом виден, даже если сам пароль поменять. Я придумал как сделать, чтобы этого не было.
serzh82saratov пишет:
То есть если пароль длиннее, то он будет урезан?
Какой пароль не имеет значения. Используется не сам пароль, а его хеш. Погугли хеширование.
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder
45 Ответ от Malcev 2022-08-04 01:54:08
- Malcev
- Разработчик
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
serzh82saratov пишет:
Спасибо, обнадёжил, я думал AHK_H совсем глючный, буду смотреть на чистой системе.
А он и есть совсем глючный и автор, к сожалению, частенько забивает на вопросы.
У меня тоже не работает.
46 Ответ от Clannad5 2022-08-04 05:02:14 (изменено: Clannad5, 2022-08-04 05:22:25)
- Clannad5
- Участник
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
Вася_01
А вы уверены что там речь идёт о 2.7 и вообще про данный способ?
Просто есть разные версии 2.6, 2.7 и 3.2.
47 Ответ от serzh82saratov 2022-08-04 09:50:36
- serzh82saratov
- Разработчик
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
Malcev пишет:
У меня тоже не работает
teadrinker чё то колдует.)
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui
48 Ответ от serzh82saratov 2022-08-04 10:15:55
- serzh82saratov
- Разработчик
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
teadrinker пишет:
в AHK_H, проблем не было. Впрочем, последние версии интерпретатора пока не проверял.
Ты же AES тестил на 1.1.33.10, или обычно другой пользуешься?
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui
49 Ответ от teadrinker 2022-08-04 16:22:46
- teadrinker
- Администратор
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
Я сам вообще AHK_H не пользуюсь, кроме случаев, когда заказывают сделать защиту. Тогда просто компилирую своим компилятором. А всякие фичи из AHK_H обычно не использую, т. к. тестирую код на обычном AHK.
Последняя версия AHK_H, которую я скачивал, была 1.1.33.10.
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder
50 Ответ от serzh82saratov 2022-08-04 20:45:38
- serzh82saratov
- Разработчик
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
teadrinker пишет:
Последняя версия AHK_H, которую я скачивал, была 1.1.33.10.
А, я подумал новее есть.
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui
51 Ответ от teadrinker 2022-08-04 22:25:50
- teadrinker
- Администратор
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
Так это уже давно было, я с тех пор не проверял.
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder
52 Ответ от serzh82saratov 2022-08-04 22:48:47
- serzh82saratov
- Разработчик
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
teadrinker пишет:
Так это уже давно было, я с тех пор не проверял.
Ну значит версия проверенная и стабильная.)
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui
53 Ответ от teadrinker 2022-08-04 22:52:34
- teadrinker
- Администратор
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
Тоже нет, мой постоянный заказчик пока что использует 1.1.33.2, вот она можно считать в целом проверенная.
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder
54 Ответ от serzh82saratov 2022-08-04 23:59:38
- serzh82saratov
- Разработчик
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
На нём тоже пробовал шифрование запускать, такая же картина. Почему так…
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui
55 Ответ от teadrinker 2022-08-05 00:01:22
- teadrinker
- Администратор
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
Если что, я запускал перетаскиванием файла скрипта на файл интерпретатора.
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder
56 Ответ от serzh82saratov 2022-08-05 01:34:47
- serzh82saratov
- Разработчик
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
Так тоже пробовал.
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui
57 Ответ от serzh82saratov 2022-08-10 19:15:58
- serzh82saratov
- Разработчик
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
teadrinker
Пытаюсь твой код из #30 переделать на строки, подскажи что поправить.
password := "password"
iv := "ку-ку"
string = Пытаюсь твой код из #30 переделать на строки, подскажи что поправить
encstring := CryptString(string, password, iv)
MsgBox % encstring
deccstring := CryptString(encstring, password, iv, false)
MsgBox % deccstring
CryptString(string, password, iv := "", crypt := true, algorithm := "AES", textEncoding := "UTF-8") {
; crypt: true — encrypt, false — decrypt
lenInData := StrPutBuff(string, inData, textEncoding)
hLib := DllCall("LoadLibrary", "Str", "Bcrypt.dll", "Ptr")
lenPasswordData := StrPutBuff(password, passwordData, textEncoding)
lenHashPassword := CreateHash(&passwordData, lenPasswordData, hashPassword)
pHashIv := lenIv := 0
if (iv != "") {
lenIvData := StrPutBuff(iv, ivData, textEncoding)
lenHashIv := CreateHash(&ivData, lenIvData, hashIv)
VarSetCapacity(iv16, 16, 0)
DllCall("RtlMoveMemory", "Ptr", pHashIv := &iv16, "Ptr", &hashIv + lenHashIv - 16, "Ptr", lenIv := 16)
}
crypt := (crypt ? "En" : "De") . "crypt"
lenOutData := Bcrypt(&inData, lenInData, outData, &hashPassword, lenHashPassword, pHashIv, lenIv, algorithm, crypt)
DllCall("FreeLibrary", "Ptr", hLib)
Return StrGet(&outData, lenOutData, textEncoding)
}
Bcrypt(pData, dataSize, ByRef outData, pKey, keySize, pIv := 0, ivSize := 0, AlgId := "AES", crypt := "Decrypt", chainingMode := "ChainingModeCBC") {
; crypt: Encrypt/Decrypt
static padding := BCRYPT_BLOCK_PADDING := 1, chainingModeSize := StrLen(chainingMode)*2
pLocalIv := 0
if pIv {
VarSetCapacity(localIv, ivSize, 0)
DllCall("RtlMoveMemory", "Ptr", pLocalIv := &localIv, "Ptr", pIv, "Ptr", ivSize)
}
DllCall("Bcrypt\BCryptOpenAlgorithmProvider", "PtrP", hAlgorithm, "WStr", AlgId, "Ptr", 0, "UInt", 0)
DllCall("Bcrypt\BCryptSetProperty", "Ptr", hAlgorithm, "WStr", "ChainingMode"
, "WStr", chainingMode, "UInt", chainingModeSize, "UInt", 0)
DllCall("Bcrypt\BCryptGenerateSymmetricKey", "Ptr", hAlgorithm, "PtrP", hKey, "Ptr", 0, "UInt", 0
, "Ptr" , pKey, "UInt", keySize, "UInt", 0, "UInt")
res := DllCall("Bcrypt\BCrypt" . crypt, "Ptr", hKey, "Ptr", pData, "UInt", dataSize, "Ptr", 0
, "Ptr", pLocalIv, "UInt", ivSize, "Ptr", 0
, "UInt", 0, "UIntP", outSize, "UInt", padding, "UInt")
if (res != 0)
throw "Crypt error! BCrypt" . crypt . "1 result: " . Format("{:#x}", res)
VarSetCapacity(outData, outSize, 0)
res := DllCall("Bcrypt\BCrypt" . crypt, "Ptr", hKey, "Ptr", pData, "UInt", dataSize, "Ptr", 0
, "Ptr", pLocalIv, "UInt", ivSize, "Ptr", &outData
, "UInt", outSize, "UIntP", outSize, "UInt", padding, "UInt")
if (res != 0)
throw "Crypt error! BCrypt" . crypt . "2 result: " . Format("{:#x}", res)
DllCall("Bcrypt\BCryptDestroyKey", "Ptr", hKey)
DllCall("Bcrypt\BCryptCloseAlgorithmProvider", "Ptr", hAlgorithm, "UInt", 0)
Return outSize
}
CreateHash(pData, size, ByRef hashData, pSecretKey := 0, keySize := 0, AlgId := "SHA256") {
; CNG Algorithm Identifiers
; https://docs.microsoft.com/en-us/windows/win32/seccng/cng-algorithm-identifiers
static HMAC := BCRYPT_ALG_HANDLE_HMAC_FLAG := 0x00000008
DllCall("Bcrypt\BCryptOpenAlgorithmProvider", "PtrP", hAlgorithm, "WStr", AlgId, "Ptr", 0, "UInt", keySize ? HMAC : 0)
DllCall("Bcrypt\BCryptCreateHash", "Ptr", hAlgorithm, "PtrP", hHash, "Ptr", 0, "UInt", 0, "Ptr", pSecretKey, "UInt", keySize, "UInt", 0)
DllCall("Bcrypt\BCryptHashData", "Ptr", hHash, "Ptr", pData, "UInt", size, "UInt", 0)
DllCall("Bcrypt\BCryptGetProperty", "Ptr", hAlgorithm, "WStr", "HashDigestLength", "UIntP", hashLen, "UInt", 4, "UIntP", cbResult, "UInt", 0)
VarSetCapacity(hashData, hashLen, 0)
DllCall("Bcrypt\BCryptFinishHash", "Ptr", hHash, "Ptr", &hashData, "UInt", hashLen, "UInt", 0)
DllCall("Bcrypt\BCryptDestroyHash", "Ptr", hHash)
DllCall("Bcrypt\BCryptCloseAlgorithmProvider", "Ptr", hAlgorithm, "UInt", 0)
Return hashLen
}
StrPutBuff(string, ByRef data, encoding := "UTF-8") {
VarSetCapacity( data, len := (StrPut(string, encoding) - 1) << (encoding ~= "i)^(UTF-16|cp1200)$") )
StrPut(string, &data, encoding)
Return len
}
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui
58 Ответ от teadrinker 2022-08-10 20:46:58
- teadrinker
- Администратор
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
В зашифрованном виде нельзя сохранять, как строку. Это просто набор байтов, в том числе и нулевых (которые, как ты помнишь, прерывают строку).
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder
59 Ответ от serzh82saratov 2022-08-10 21:14:12
- serzh82saratov
- Разработчик
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
Получается в AHK_H байты как то конвертируются в строку?
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui
60 Ответ от serzh82saratov 2022-08-10 21:17:58
- serzh82saratov
- Разработчик
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
Или он буфер преобразует. А буфер никак нельзя сохранить как строку?
string := "Hello, World"
size := StrPutBuff(string, buf)
size := CryptAES(&buf, size, "sdfKIop", true, 128)
MsgBox, % StrGet(&buf, size, "UTF-8")
size := CryptAES(&buf, size, "sdfKIop", false, 128)
MsgBox, % StrGet(&buf, size, "UTF-8")
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui
61 Ответ от serzh82saratov 2022-08-10 21:26:38
- serzh82saratov
- Разработчик
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
Malcev пишет:
У меня тоже не работает.
Попробовал на виртуалке, работает. Что за ерунда может мешать работе этих функций…
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui
62 Ответ от serzh82saratov 2022-08-10 21:28:43
- serzh82saratov
- Разработчик
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
serzh82saratov пишет:
А буфер никак нельзя сохранить как строку?
Вроде как то в BASE64 переводили байты, ну и после в буфер восстанавливали.
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui
63 Ответ от teadrinker 2022-08-10 21:44:15
- teadrinker
- Администратор
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
serzh82saratov пишет:
Получается в AHK_H байты как то конвертируются в строку?
Строка — это и есть байты, ничего конвертировать не нужно. Но чтобы из байтов могла получиться строка, все байты должны соответствовать коду видимых символов в определённой кодировке, и не должно быть нулевых символов посередине.
Буфер с байтами можно сохранить как base64 или hex.
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder
64 Ответ от serzh82saratov 2022-08-10 21:59:14
- serzh82saratov
- Разработчик
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
teadrinker пишет:
Буфер с байтами можно сохранить как base64 или hex.
Тут также работает?
https://www.autohotkey.com/boards/viewtopic.php?t=23413
Но только на анк х64.
MsgBox % Crypt.Encrypt.String("AES", "CBC", "abcdefghijklmnop", "1234567890123456", "1234567890123456")
; -> Nn9CFFuC+/O84cV1NiwLYoyd25Z9nmWv16dIFKzf2b4=
MsgBox % Crypt.Decrypt.String("AES", "CBC", "Nn9CFFuC+/O84cV1NiwLYoyd25Z9nmWv16dIFKzf2b4=", "1234567890123456", "1234567890123456")
; -> abcdefghijklmnop
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui
65 Ответ от teadrinker 2022-08-10 22:02:02
- teadrinker
- Администратор
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
Наверно так же, у меня должно работать в любой версии AHK.
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder
66 Ответ от serzh82saratov 2022-08-10 22:05:00
- serzh82saratov
- Разработчик
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
teadrinker пишет:
Наверно так же
Чё то там заморочено. А ты пробовал свой вариант со строкой?
teadrinker пишет:
Буфер с байтами можно сохранить как base64
У тебя есть код для base64?
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui
67 Ответ от teadrinker 2022-08-10 22:54:23
- teadrinker
- Администратор
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
Так вот же он.
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder
68 Ответ от serzh82saratov 2022-08-10 23:01:06 (изменено: serzh82saratov, 2022-08-10 23:01:36)
- serzh82saratov
- Разработчик
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
Так там же строка на входе, а ты сказал что байты не могут восприниматься строкой если в них нулевой байт.
Починил то что по ссылке приводил под х32.
Там даются 3 метода шифрования AES это EBC / CBC / CFB, а в AHK_H 128, 192 и 256 бит. Почитал вроде это разные вещи, не в курсе за это?
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui
69 Ответ от teadrinker 2022-08-10 23:22:08
- teadrinker
- Администратор
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
Функция CryptBinaryToStringBASE64() принимает указатель на буфер и его размер, и возвращает строку base64.
Когда код шифрования писал, разбирался довольно подробно, но это давно уже было, сейчас уже не помню.
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder
70 Ответ от serzh82saratov 2022-08-10 23:28:35
- serzh82saratov
- Разработчик
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
teadrinker пишет:
но это давно уже было
У меня с АНК типа того.
teadrinker пишет:
возвращает строку base64
Строку возвращает, а что с ней потом делать, не пойму.
encstring := CryptString(string, password, iv)
MsgBox % encstring := String2BASE64(encstring, 1)
deccstring := CryptString(BASE642String(encstring), password, iv, false)
MsgBox % deccstring
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui
71 Ответ от serzh82saratov 2022-08-10 23:41:42
- serzh82saratov
- Разработчик
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
Попробовал ещё так передать на дешифровку BASE64.
CryptString(string, password, iv := "", crypt := true, algorithm := "AES", textEncoding := "UTF-8") {
; crypt: true — encrypt, false — decrypt
If crypt
lenInData := StrPutBuff(string, inData, textEncoding)
Else
lenInData := StringBase64ToData(string, inData)
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui
72 Ответ от serzh82saratov 2022-08-10 23:51:54
- serzh82saratov
- Разработчик
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
serzh82saratov пишет:
Там даются 3 метода шифрования AES это EBC / CBC / CFB, а в AHK_H 128, 192 и 256 бит. Почитал вроде это разные вещи, не в курсе за это?
Насколько понял в AHK_H метод предустановлен, а биты это длинна хеша пароля.
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui
73 Ответ от teadrinker 2022-08-11 01:05:58
- teadrinker
- Администратор
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
serzh82saratov пишет:
Строку возвращает, а что с ней потом делать, не пойму
А зачем с ней что-то делать? Это зашифрованные байты изначальной строки, сохранённые, как base64. Можно просто сохранить в таком виде до расшифровки.
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder
74 Ответ от serzh82saratov 2022-08-11 01:10:29
- serzh82saratov
- Разработчик
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
Так вопрос в том как расшифровать этот base64.
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui
75 Ответ от teadrinker 2022-08-11 01:20:47
- teadrinker
- Администратор
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
StringBase64ToData() переводит base64 в буфер и возвращает его размер, этот буфер нужно подать на расшифровку.
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder
76 Ответ от serzh82saratov 2022-08-11 01:23:52
- serzh82saratov
- Разработчик
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
teadrinker пишет:
этот буфер нужно подать на расшифровку.
Это у меня и не получается.
#NoEnv
SetBatchLines, -1
password := "password"
iv := "ку-ку"
string = Строку возвращает, а что с ней потом делать, не пойму.
encstring := CryptString(string, password, iv)
MsgBox % encstring := String2BASE64(encstring, 1)
deccstring := CryptString(encstring, password, iv, false)
MsgBox % deccstring
String2BASE64(str, NOCRLF)
{
Return CryptBinaryToStringBASE64(&str, StrLen(str) * (A_IsUnicode ? 2 : 1), NOCRLF)
}
BASE642String(StringBASE64)
{
size := StringBase64ToData(StringBase64, Data)
Return StrGet(&Data, size >> !!A_IsUnicode, A_IsUnicode ? "UTF-16" : "cp0")
}
CryptBinaryToStringBASE64(pData, Bytes, NOCRLF = "")
{
static CRYPT_STRING_BASE64 := 1, CRYPT_STRING_NOCRLF := 0x40000000
Crypt := CRYPT_STRING_BASE64 | (NOCRLF ? CRYPT_STRING_NOCRLF : 0)
DllCall("Crypt32.dll\CryptBinaryToString", Ptr, pData, UInt, Bytes, UInt, Crypt, Ptr, 0, UIntP, Chars)
VarSetCapacity(OutData, Chars * (A_IsUnicode ? 2 : 1))
DllCall("Crypt32.dll\CryptBinaryToString", Ptr, pData, UInt, Bytes, UInt, Crypt, Str, OutData, UIntP, Chars)
Return OutData
}
StringBase64ToData(StringBase64, ByRef OutData)
{
static CRYPT := CRYPT_STRING_BASE64 := 1
DllCall("Crypt32.dll\CryptStringToBinary", Ptr, &StringBase64
, UInt, StrLen(StringBase64), UInt, CRYPT, UInt, 0, UIntP, Bytes, UIntP, 0, UIntP, 0)
VarSetCapacity(OutData, Bytes)
DllCall("Crypt32.dll\CryptStringToBinary", Ptr, &StringBase64
, UInt, StrLen(StringBase64), UInt, CRYPT, Str, OutData, UIntP, Bytes, UIntP, 0, UIntP, 0)
Return Bytes
}
CryptString(string, password, iv := "", crypt := true, algorithm := "AES", textEncoding := "UTF-8") {
; crypt: true — encrypt, false — decrypt
If crypt
lenInData := StrPutBuff(string, inData, textEncoding)
Else
lenInData := StringBase64ToData(string, inData)
hLib := DllCall("LoadLibrary", "Str", "Bcrypt.dll", "Ptr")
lenPasswordData := StrPutBuff(password, passwordData, textEncoding)
lenHashPassword := CreateHash(&passwordData, lenPasswordData, hashPassword)
pHashIv := lenIv := 0
if (iv != "") {
lenIvData := StrPutBuff(iv, ivData, textEncoding)
lenHashIv := CreateHash(&ivData, lenIvData, hashIv)
VarSetCapacity(iv16, 16, 0)
DllCall("RtlMoveMemory", "Ptr", pHashIv := &iv16, "Ptr", &hashIv + lenHashIv - 16, "Ptr", lenIv := 16)
}
crypt := (crypt ? "En" : "De") . "crypt"
lenOutData := Bcrypt(&inData, lenInData, outData, &hashPassword, lenHashPassword, pHashIv, lenIv, algorithm, crypt)
DllCall("FreeLibrary", "Ptr", hLib)
Return StrGet(&outData, lenOutData, textEncoding)
}
Bcrypt(pData, dataSize, ByRef outData, pKey, keySize, pIv := 0, ivSize := 0, AlgId := "AES", crypt := "Decrypt", chainingMode := "ChainingModeCBC") {
; crypt: Encrypt/Decrypt
static padding := BCRYPT_BLOCK_PADDING := 1, chainingModeSize := StrLen(chainingMode)*2
pLocalIv := 0
if pIv {
VarSetCapacity(localIv, ivSize, 0)
DllCall("RtlMoveMemory", "Ptr", pLocalIv := &localIv, "Ptr", pIv, "Ptr", ivSize)
}
DllCall("Bcrypt\BCryptOpenAlgorithmProvider", "PtrP", hAlgorithm, "WStr", AlgId, "Ptr", 0, "UInt", 0)
DllCall("Bcrypt\BCryptSetProperty", "Ptr", hAlgorithm, "WStr", "ChainingMode"
, "WStr", chainingMode, "UInt", chainingModeSize, "UInt", 0)
DllCall("Bcrypt\BCryptGenerateSymmetricKey", "Ptr", hAlgorithm, "PtrP", hKey, "Ptr", 0, "UInt", 0
, "Ptr" , pKey, "UInt", keySize, "UInt", 0, "UInt")
res := DllCall("Bcrypt\BCrypt" . crypt, "Ptr", hKey, "Ptr", pData, "UInt", dataSize, "Ptr", 0
, "Ptr", pLocalIv, "UInt", ivSize, "Ptr", 0
, "UInt", 0, "UIntP", outSize, "UInt", padding, "UInt")
if (res != 0)
throw "Crypt error! BCrypt" . crypt . "1 result: " . Format("{:#x}", res)
VarSetCapacity(outData, outSize, 0)
res := DllCall("Bcrypt\BCrypt" . crypt, "Ptr", hKey, "Ptr", pData, "UInt", dataSize, "Ptr", 0
, "Ptr", pLocalIv, "UInt", ivSize, "Ptr", &outData
, "UInt", outSize, "UIntP", outSize, "UInt", padding, "UInt")
if (res != 0)
throw "Crypt error! BCrypt" . crypt . "2 result: " . Format("{:#x}", res)
DllCall("Bcrypt\BCryptDestroyKey", "Ptr", hKey)
DllCall("Bcrypt\BCryptCloseAlgorithmProvider", "Ptr", hAlgorithm, "UInt", 0)
Return outSize
}
CreateHash(pData, size, ByRef hashData, pSecretKey := 0, keySize := 0, AlgId := "SHA256") {
; CNG Algorithm Identifiers
; https://docs.microsoft.com/en-us/windows/win32/seccng/cng-algorithm-identifiers
static HMAC := BCRYPT_ALG_HANDLE_HMAC_FLAG := 0x00000008
DllCall("Bcrypt\BCryptOpenAlgorithmProvider", "PtrP", hAlgorithm, "WStr", AlgId, "Ptr", 0, "UInt", keySize ? HMAC : 0)
DllCall("Bcrypt\BCryptCreateHash", "Ptr", hAlgorithm, "PtrP", hHash, "Ptr", 0, "UInt", 0, "Ptr", pSecretKey, "UInt", keySize, "UInt", 0)
DllCall("Bcrypt\BCryptHashData", "Ptr", hHash, "Ptr", pData, "UInt", size, "UInt", 0)
DllCall("Bcrypt\BCryptGetProperty", "Ptr", hAlgorithm, "WStr", "HashDigestLength", "UIntP", hashLen, "UInt", 4, "UIntP", cbResult, "UInt", 0)
VarSetCapacity(hashData, hashLen, 0)
DllCall("Bcrypt\BCryptFinishHash", "Ptr", hHash, "Ptr", &hashData, "UInt", hashLen, "UInt", 0)
DllCall("Bcrypt\BCryptDestroyHash", "Ptr", hHash)
DllCall("Bcrypt\BCryptCloseAlgorithmProvider", "Ptr", hAlgorithm, "UInt", 0)
Return hashLen
}
StrPutBuff(string, ByRef data, encoding := "UTF-8") {
VarSetCapacity( data, len := (StrPut(string, encoding) - 1) << (encoding ~= "i)^(UTF-16|cp1200)$") )
StrPut(string, &data, encoding)
Return len
}
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui
77 Ответ от teadrinker 2022-08-11 01:27:52
- teadrinker
- Администратор
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
teadrinker пишет:
В зашифрованном виде нельзя сохранять, как строку.
А у тебя CryptString() пытается вернуть строку.
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder
78 Ответ от teadrinker 2022-08-11 01:30:22
- teadrinker
- Администратор
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
Нужно понять концепцию: шифруются и расшифровываются не строки и не файлы, а просто массивы байтов. Чем были эти массивы до зашифровки и чем будут после расшифровки не имеет значения. В любом случае функция шифрования принимает массив байтов и возвращает тоже массив байтов.
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder
79 Ответ от serzh82saratov 2022-08-11 01:32:09
- serzh82saratov
- Разработчик
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
teadrinker пишет:
А у тебя CryptString() пытается вернуть строку.
CryptString(string, password, iv := "", crypt := true, algorithm := "AES", textEncoding := "UTF-8") {
; crypt: true — encrypt, false — decrypt
If crypt
lenInData := StrPutBuff(string, inData, textEncoding)
Else
lenInData := StringBase64ToData(string, inData)
hLib := DllCall("LoadLibrary", "Str", "Bcrypt.dll", "Ptr")
lenPasswordData := StrPutBuff(password, passwordData, textEncoding)
lenHashPassword := CreateHash(&passwordData, lenPasswordData, hashPassword)
pHashIv := lenIv := 0
if (iv != "") {
lenIvData := StrPutBuff(iv, ivData, textEncoding)
lenHashIv := CreateHash(&ivData, lenIvData, hashIv)
VarSetCapacity(iv16, 16, 0)
DllCall("RtlMoveMemory", "Ptr", pHashIv := &iv16, "Ptr", &hashIv + lenHashIv - 16, "Ptr", lenIv := 16)
}
crypt := (crypt ? "En" : "De") . "crypt"
lenOutData := Bcrypt(&inData, lenInData, outData, &hashPassword, lenHashPassword, pHashIv, lenIv, algorithm, crypt)
DllCall("FreeLibrary", "Ptr", hLib)
If crypt
Return outData
Return StrGet(&outData, lenOutData, textEncoding)
}
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui
80 Ответ от teadrinker 2022-08-11 01:34:49
- teadrinker
- Администратор
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
Return StrGet(&outData, lenOutData, textEncoding)
Ну да, это строка и это неправильно. Функция должна вернуть буфер и его длину.
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder
81 Ответ от teadrinker 2022-08-11 02:35:36
- teadrinker
- Администратор
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
Либо, если уж хочется иметь одну и ту же функцию для шифрования и расшифровки строки, то в случае шифрования возвращать сразу base64, а в случае расшифровки строку.
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder
82 Ответ от Malcev 2022-08-11 06:49:16
- Malcev
- Разработчик
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
serzh82saratov пишет:
Попробовал на виртуалке, работает. Что за ерунда может мешать работе этих функций…
А смысл возиться и плясать с бубном с AHK_H?
83 Ответ от serzh82saratov 2022-08-11 09:56:39
- serzh82saratov
- Разработчик
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
teadrinker пишет:
Ну да, это строка и это неправильно
Вроде верно, так, с ней же заработало.
CryptString(string, password, iv := "", crypt := true, algorithm := "AES", textEncoding := "UTF-8") {
; crypt: true — encrypt, false — decrypt
If crypt
lenInData := StrPutBuff(string, inData, textEncoding)
Else
lenInData := StringBase64ToData(string, inData)
hLib := DllCall("LoadLibrary", "Str", "Bcrypt.dll", "Ptr")
lenPasswordData := StrPutBuff(password, passwordData, textEncoding)
lenHashPassword := CreateHash(&passwordData, lenPasswordData, hashPassword)
pHashIv := lenIv := 0
if (iv != "") {
lenIvData := StrPutBuff(iv, ivData, textEncoding)
lenHashIv := CreateHash(&ivData, lenIvData, hashIv)
VarSetCapacity(iv16, 16, 0)
DllCall("RtlMoveMemory", "Ptr", pHashIv := &iv16, "Ptr", &hashIv + lenHashIv - 16, "Ptr", lenIv := 16)
}
crypt := (crypt ? "En" : "De") . "crypt"
lenOutData := Bcrypt(&inData, lenInData, outData, &hashPassword, lenHashPassword, pHashIv, lenIv, algorithm, crypt)
DllCall("FreeLibrary", "Ptr", hLib)
If (crypt = "Encrypt")
Return CryptBinaryToStringBASE64(&outData, lenOutData, 1)
Return StrGet(&outData, lenOutData, textEncoding)
}
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui
84 Ответ от serzh82saratov 2022-08-11 10:01:31
- serzh82saratov
- Разработчик
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
Malcev пишет:
А смысл возиться и плясать с бубном с AHK_H?
Ну он с шифрованием кода, с антиотладчиком, в памяти вроде части кода затирает чтобы в дампе памяти не видно было. AHK_L, школьник взломает, а тут вроде всё по взрослому.
И многопоточность без танцев с бубнами.
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui
85 Ответ от teadrinker 2022-08-11 10:55:08
- teadrinker
- Администратор
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
serzh82saratov пишет:
с ней же заработало
А, не очень внимательно посмотрел. Там было
Но так тоже как строку возвращает, пример:
data := CryptString()
MsgBox, % data
MsgBox, % Format("{:#x}", NumGet(data, "Int64"))
CryptString() {
VarSetCapacity(outData, 8, 0)
NumPut(0x6100000061, outData, "Int64")
VarSetCapacity(outData, -1)
MsgBox, % outData
MsgBox, % Format("{:#x}", NumGet(outData, "Int64"))
Return outData
}
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder
86 Ответ от serzh82saratov 2022-08-11 13:05:38
- serzh82saratov
- Разработчик
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
teadrinker пишет:
Но так тоже как строку возвращает, пример:
А к чему этот пример, что то не понял.
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui
87 Ответ от teadrinker 2022-08-11 15:31:03
- teadrinker
- Администратор
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
К тому, что если в переменной бинарные данные, её нельзя возвращать через return.
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder
88 Ответ от serzh82saratov 2022-08-11 15:45:06
- serzh82saratov
- Разработчик
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
teadrinker пишет:
если в переменной бинарные данные, её нельзя возвращать через return
Это да, косяк. Надо указатель передавать когда это требуется.
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui
89 Ответ от Malcev 2022-08-15 13:55:06
- Malcev
- Разработчик
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
serzh82saratov пишет:
AHK_L, школьник взломает, а тут вроде всё по взрослому.
Вопрос конечно интересный, насколько тут по-взрослому.
Я с хакерами не знаком, виртуально знаю только одного — очень серьезного, но он точно заниматься подобными глупостями не будет.
Если есть интерес, то можно скинуться и на кворке заказать взлом и проверить насколько крепка защита.
90 Ответ от serzh82saratov 2022-08-17 18:07:42
- serzh82saratov
- Разработчик
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
Malcev пишет:
насколько тут по-взрослому.
Ну видимо на сколько-то. От школьника есть защита, уже хорошо. Насколько я слышал, питон и ява тоже не защищены достойно, хотя на счёт ява может и ошибаюсь.
Malcev пишет:
можно скинуться и на кворке заказать взлом и проверить насколько крепка защита
А вот это не надо, так и появляются в итоге публичные методы взлома.
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui
91 Ответ от serzh82saratov 2022-08-31 19:34:48
- serzh82saratov
- Разработчик
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
teadrinker пишет:
У меня так работает на версии 1.1.33.10:
string:="This is a message from AutoHotkey." sz := ZipRawMemory(string, StrLen(string) * 2 + 2, var, "password") ; подразумевается UTF-16 UnZipRawMemory(&var, sz, text, "password") MsgBox % text string := "Hello, World" size := StrPutBuff(string, buf) size := CryptAES(&buf, size, "sdfKIop", true, 128) MsgBox, % StrGet(&buf, size, "UTF-8") size := CryptAES(&buf, size, "sdfKIop", false, 128) MsgBox, % StrGet(&buf, size, "UTF-8") StrPutBuff(str, ByRef buff, encoding := "UTF-8") { VarSetCapacity(buff, len := (StrPut(str, encoding) - 1) << (encoding ~= "i)^(UTF-16|cp1200)$")) StrPut(str, &buff, encoding) Return len }
В первом примере + 2 не обязательно, но желательно.
То ли я всегда пробовал этот код целиком, но CryptAES заработал, ошибка была в ZipRawMemory.
Чё то всё равно не доходит, как зашифровать ей строку в обычную строку, и после эту строку дешифровать.
#SingleInstance Force
#NoEnv
SetBatchLines, -1
decstring := "Hello, World"
size := StrPutBuff(decstring, decbuf)
size := CryptAES(&decbuf, size, "sdfKIop", true, 128)
encstring := StrGet(&decbuf, size, "UTF-8")
MsgBox, % encstring
size := StrPutBuff(encstring, encbuf)
size := CryptAES(&encbuf, size, "sdfKIop", false, 128)
MsgBox, % StrGet(&encbuf, size, "UTF-8")
StrPutBuff(str, ByRef buff, encoding := "UTF-8") {
VarSetCapacity(buff, len := (StrPut(str, encoding) - 1) << (encoding ~= "i)^(UTF-16|cp1200)$"))
StrPut(str, &buff, encoding)
Return len
}
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui
92 Ответ от teadrinker 2022-08-31 20:29:26
- teadrinker
- Администратор
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
serzh82saratov пишет:
как зашифровать ей строку в обычную строку
Так я же объяснял уже.
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder
93 Ответ от serzh82saratov 2022-08-31 20:50:24 (изменено: serzh82saratov, 2022-08-31 20:50:38)
- serzh82saratov
- Разработчик
- Неактивен
Re: AHK: Убрать всплывающую ошибку у файла AutoHotkey.exe
Что то с памятью моей стало…
Всё получилось, прилепил BASE64.
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui
Script won’t compile do to the brackets being incorrect after adding the Else statement. Compiler says that line 67 is the culprit and I’m not sure why.
#NoEnv
SetWorkingDir %A_ScriptDir%
CoordMode, Mouse, Pixel
SendMode Input
#SingleInstance Force
SetControlDelay 1
SetWinDelay 0
SetKeyDelay -1
SetMouseDelay -1
SetBatchLines -1
^!6::
CoordMode, Pixel, Screen
CoordMode, ToolTip, Screen
CoordMode, Mouse, Screen
Click, 830, 393
Sleep 2000
Click, 678, 538
Sleep 500
Click, 840, 800
Sleep 2000
Click, 671, 974
Sleep 500
Click, 1775, 300
Sleep 2000
Click, 1643, 487
Sleep 2000
var = 0
Loop {
ImageSearch, FoundX, FoundY, 0, 0, %A_ScreenWidth%, %A_ScreenHeight%, *100 C:\Users\USER\Desktop\Folder\ImageAssets\storage4x4\image%var%.jpg
If (ErrorLevel = 0) {
If %var% = 0 {
Click, %FoundX%, %FoundY%
Sleep 50
Click, %FoundX%, %FoundY%
Sleep 100
ToolTip, Refreshing Store..., %FoundX%, %FoundY%
}
Else {
SoundPlay, C:\Users\USER\Desktop\Folder\SoundAssets\found.wav
Click, %FoundX%, %FoundY%
Sleep 50
Click, %FoundX%, %FoundY%
ToolTip, image%var%.jpg, %FoundX% + 10, %FoundY% + 10
ErrorLevel := -1
FoundX := ""
FoundY := ""
SearchAndPurchase()
}
}
If ErrorLevel
ToolTip, Didn't find image%var%.jpg, 0, 25
If var >= 10
var =
var += 1
}
Return
SearchAndPurchase(){
Sleep 5000
var = 0
Loop, 5 {
var += 1
Sleep 5000
ImageSearch, FoundX, FoundY, 0, 0, %A_ScreenWidth%, %A_ScreenHeight%, *100 C:\Users\USER\Desktop\Folder\ImageAssets\storage4x4\Storage4x4Store\image%var%.jpg
If (ErrorLevel = 0) {
SoundPlay, C:\Users\USER\Desktop\Folder\SoundAssets\chaching.wav
Click, %FoundX%, %FoundY%
ToolTip, $$$ image%var%.jpg $$$, %FoundX% + 10, %FoundY% + 10
Sleep 50
Click, %FoundX%, %FoundY%
FoundX := ""
FoundY := ""
}
If (ErrorLevel)
ToolTip, Couldn't purchase... 0, 75
If (var >= 10)
var = 0
}
ToolTip, Leaving Store and refreshing market..., 0, 25
Click, 678, 538
Click, 678, 1043
Click, 1643, 538
Sleep 2000
Click, 678, 538
Click, 678, 1043
Click, 1643, 538
Sleep 2000
}
Esc:: ExitApp
I counted all the brackets and there are 7 of each direction in the code. I also deleted all brackets and re-added them a couple of times to try and catch mistake but with no luck. What’s going on here?
Search code, repositories, users, issues, pull requests…
Provide feedback
Saved searches
Use saved searches to filter your results more quickly
Sign up