Параметры обфускатора

Параметры обфускатора позволяют выполнить обработку скрипта перед компиляцией

Директивы обфускации

#Autoit3Wrapperr_Run_Obfuscator=y;Запустить обфускатор перед компиляцией. По умолчанию=n
#Obfuscator_Parameters= /CS=0 /CN=0 /SCI=1 /Beta;Параметры обфускации
#Obfuscator_Off;Остановить процесс обфускации ниже этой строки
#Obfuscator_On;Начать процесс обфускации ниже этой строки
#Obfuscator_Ignore_Funcs=; Не обрабатывать указанные функции
#Obfuscator_Ignore_Variables=; Не обрабатывать указанные переменные

Параметры обфускации

/CV/Convert_Vars=0; Не кодировать переменные (По умолчанию = 1)
/CF/Convert_Funcs=0; Не кодировать функции (По умолчанию = 1)
/CS/Convert_Strings=0; Не кодировать текстовые строки (По умолчанию = 1)
/CN/Convert_Numerics=0; Не кодировать числа (По умолчанию = 1 )
/SO/StripOnly; Установить опции: /SF /SV /CV=0 /CF=0 /CS=0 /CN=0
/SOI/StripOnlyIncludes; Аналогично /SO, но не обрабатывать основной скрипт (полезно, когда скрипт содержит команды создающие невозможность обфускации).
/OM/ObfuscateMinumum; Генерирует меньшего размера файл, даёт переменным короткие имена в три символа.
/SF/StripUnusedFunc; Удаляет функции невызываемые из основного скрипта. (По умолчанию = 0)
/SV/StripUnusedVars; Удаляет неиспользуемые глобальные переменные. (По умолчанию = 0)
/SCI/showconsoleinfo 0; По умолчанию - минимум информации в консоль о предупреждениях и ошибках.
/SCI/showconsoleinfo 1; Показать больше информации.
/SCI/showconsoleinfo 9; Показать все строки отладки, которые содержатся в Obfuscator.log
/Beta; Использовать AutoIt\Beta\Include файлы

Функции вызывающие проблемы обфускации

AdlibRegister
Assign
Call
Eval
Execute
GUIRegisterMsg
GUISetOnEvent
GUICtrlSetOnEvent
HotKeySet
IsDeclared
TrayItemSetOnEvent
ObjEvent
OnAutoItExitRegister
Opt
("OnExitFunc","OnAutoItExit")


Проблема в том, что имена вызываемых функций могут быть прочитаны из ini-файла в виде текстовой строки, и заранее неизвестно имя функции, но оно является константой для скрипта, а обфускатор после изменения имён сделает функцию недоступной для использования. Аналогично для Assign и Eval могут оказаться недоступными имена переменных, созданных из текстовых имён прочитанных из ini-файла. Чтобы избавится от проблемы используем следующие варианты:
1. Параметр #Obfuscator_Parameters=/SOI - позволяет обфуцировать все Include, не затрагивая основной скрипт. Это уменьшает размер выходного EXE-файла
2. Параметры #Obfuscator_Off и #Obfuscator_On позволяют отключить обфускацию на проблемных участках кода.
3. Параметры #Obfuscator_Ignore_Funcs= и #Obfuscator_Ignore_Variables= позволяют отключить обфускацию указанных функций и переменных

Параметры игнорирования перечисляются через запятую.

#Obfuscator_Ignore_Variables=$LngTitle,$LngAbout,$LngVer,$LngSite,$LngCopy
#Obfuscator_Ignore_Funcs=_FuncName, _UserFuncName


Пример игнорирования участка кода

$var=1
#Obfuscator_Off
$text=2 ; этот участок кода не обфуцируется
#Obfuscator_On
$var=3