Защита скрипта и корректная обработка require
Почему require может быть небезопасен?
- Зашифрованный модуль скрипта XXTouch может быть подключён другим скриптом или модулем через require.
- При подключении зашифрованного скрипта через require глобальная среда ненадёжна, и вызываемые скриптом функции могли быть заменены.
Как правильно использовать require?
- XXTouch гарантирует восстановление исходного состояния функций некоторых модулей до вызова require, включая все функции модулей
os,io,string,device,http,fileиtable. - Чтобы безопасно вызывать функции перечисленных модулей, можно глубоко скопировать глобальную среду в локальную среду модуля, например:
-- Добавьте этот код в самое начало скрипта.
local _ENV = table.deep_copy(_ENV)
-- Ниже располагается основное содержимое скрипта.
--
-- В конце может потребоваться вернуть экспортируемые функции или константы. - Когда модуль подключается через require, глобальная переменная
been_requireбезусловно устанавливается вtrue; по ней можно определить, подключается ли текущий скрипт через require, например:-- Добавьте этот код в самое начало скрипта.
if been_require then
return -- Немедленно завершает выполнение при подключении через require.
end
-- Ниже располагается основное содержимое скрипта.