Обфускация кода – инструмент запутывания кода макроса, с целью защиты его от не санкционированного доступа, сохраняющий его функциональность, но затрудняющий его анализ
Обфускация кода – производится в несколько этапов:
- Парсер кода VBA – сбор, из проекта VBA, названий переменных (локальных и глобальных), названий процедур и функций, название всех модулей VBA, названия “контролов” UserForms
- Обфускация – главный процесс запутывания кода, производится по списку сформированному парсером кода. Перед выполнением операции “Удаление форматирования” – производится тестирование кода на работоспособность.
- Удаление форматирования – удаление из кода: комментариев, форматирование кода, нумерации строк, пустых строк, перенос строк, инструкции “Option”
Обфускация закончена!
Данный инструмент, рекомендуется использовать совместно с инструментами:
Парсер кода VBA:
В процессе парсинга формируются две таблицы – “DATA_OBF_VBATools” и “STRING_OBF_VBATools“.
В таблица DATA_OBF_VBATools, содержит данные о названиях: переменных, процедур и функций, модулей и контролов UserForm. Которым в процессе парсинга присваиваются новые зашифрованные названия. Так же для каждого элемента в таблице можно выбрать шифровать его или нет при обфускации.
В таблица STRING_OBF_VBATools, содержит все строковые переменные используемые в проекте VBA. В процессе обфускации эти данные будут помещены в отдельный модуль проекта VBA. А в модулях где они используются они будут заменены на присвоенный им шифр.
Обфускация кода:
Нужно перейти в сформированную ранее таблицу “DATA_OBF_VBATools“.
На панели инструментов, надстройки Macro Tools VBA, выбрать пункт обфускация кода.
В диалоговом окне выбрать файл который нужно зашифровать.
Дождаться окончания процесса обфускации кода.
Удаление форматирования:
Завершающий этап обфускации удаление форматирования кода VBA.
Настройка параметров, удаления форматов кода: комментарий, форматирования, нумерацию строк, пустых и переносов строк.
Данный инструмент можно использовать и для простых, проектов в которых нужно удалить те или иные параметры кода VBA.