- Сообщения
- 8,673
- Репутация
- 2,486
Иногда есть желание распространять свою программу с исходным кодом, но не в открытом виде, а с возможностью распаковывать его из самого Exe.
Сделать такую возможность очень просто.
Данный пример подразумивает ввод пароля для получения исходного кода, поэтому для начала нужно получить зашифрованный ключ:
Далее добавляем проверку в ваш скрипт:
Всё, теперь при запуске скомпилированного скрипта вам (точнее пользователю вашей программы) будет предложенно указать пароль для получения исходного кода, при верном пароле, будет распакован файл исходного кода с добавкой _src в имени оригинального файла (exe).
P.S
Конечно в “запароливаний” особого смысла нет, но это так, для наглядности
Сделать такую возможность очень просто.
Данный пример подразумивает ввод пароля для получения исходного кода, поэтому для начала нужно получить зашифрованный ключ:
Код:
#include <String.au3>
$sCryptedPass = _StringEncrypt(1, 'qwerty', 'qwerty') ;qwerty это ваш пароль
ClipPut($sCryptedPass) ;После этого ваш зашифрованный ключ будет помещён в буфер обмена
Далее добавляем проверку в ваш скрипт:
Код:
#Region --SRC_SIGN--
#include <String.au3>
If $CmdLine[0] > 0 And $CmdLine[1] = "/Source" Then
$sPassKey = '9BA81FDF0B89502F8E2B599A' ;Это полученный в буфер обмена зашифрованный ключ
$sPass = InputBox(@ScriptName & ' - Source Password', 'Enter password to get the source code:', '', '*')
If @error Then Exit
If _StringEncrypt(0, $sPassKey, $sPass) = $sPass Then
$sSrcFile = StringTrimRight(@ScriptFullPath, 4) & "_src.au3"
;YourScriptName.au3 следует заменить на имя вашего скрипта
$iRet = FileInstall("YourScriptName.au3", $sSrcFile) ;, 1) ;Раскоментируйте для перезаписи файла исходного кода
If $iRet Then
$sSrcRead = FileRead($sSrcFile)
$sSrcRead = StringRegExpReplace($sSrcRead, '#(Region --SRC_SIGN--)((?s).*?)\r?\n#End\1(\r?\n)*', '')
$hFile = FileOpen($sSrcFile, 2)
FileWrite($hFile, $sSrcRead)
FileClose($hFile)
MsgBox(262144+64, @ScriptName & ' - Source', 'Source code saved as:' & @CRLF & $sSrcFile)
Else
MsgBox(262144+48, @ScriptName & ' - Source', 'Unable to save the Source code (already exists).')
EndIf
Else
MsgBox(262144+48, @ScriptName & ' - Source', 'Wrong password.')
EndIf
Exit
EndIf
#EndRegion --SRC_SIGN--
;===== Далее тело вашего скрипта =====
Всё, теперь при запуске скомпилированного скрипта вам (точнее пользователю вашей программы) будет предложенно указать пароль для получения исходного кода, при верном пароле, будет распакован файл исходного кода с добавкой _src в имени оригинального файла (exe).
P.S
Конечно в “запароливаний” особого смысла нет, но это так, для наглядности