Что нового

Добавление возможности распаковки исходного кода из вашего Exe

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,673
Репутация
2,486
Иногда есть желание распространять свою программу с исходным кодом, но не в открытом виде, а с возможностью распаковывать его из самого Exe.

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

Код:
#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
Конечно в “запароливаний” особого смысла нет, но это так, для наглядности :smile:
 
Верх