11. Обфускация

11.1. Автоматическая обфускация кода

Для автоматической обфускации следует настроить программу для выполнения ее из командной строки. Это позволит добавить обфускацию в скрипты сборочного сервера или просто запускать ее, например, через ярлык на рабочем столе.

Параметры

-OBF=SIMPLE
разрешает обфускацию и использует шаблон (SIMPLE) настроек программы указывающих временные каталоги и пр.
[Примечание]Примечание

Приведенные ниже примеры и настройки указаны с учетом использования этого параметра и его значения (-OBF=SIMPLE).

-SOURCEWRITE
разрешает перезаписывать изменения в исходные файлы.
-OPENREPORT=OBFUSCATOR
запускает в браузере отчет обфускации.
-GENERATEREPORTHTMLTOFILE=OBFUSCATOR|названиефайла
сохраняет HTML-отчет OBFUSCATOR в файл. Пример: -FILEJUNITWRITE=OBFUSCATOR|c:\example\report.html
-SOURCEFILE=названиефайла
указывает название файла для обфускации. Возможно многократное использование параметра. Можно указывать значение в кавычках для указания пути к файлу содержащему пробелы: -SOURCEFILE="названиефайла"
-SOURCEDIR=названиекаталога
указывает название каталога с файлами для обфускации. Возможно многократное использование параметра.
-OBFUSCATESTRINGLENGTHLIMIT=значение
указывает максимальное количество символов в текстовой константе.
-USEOBFUSCATESTRINGLEFTRIGHT
разрешает применение функций Left() и Right() (VB.NET) или Substring (C#) для запутывания текстовых значений.
-SUPPORT
включает максимальные настройки логирования работы программы и выводит лог на экран. Это позволит, при обращении в службу поддержки, быстрее решить интересующие пользователя вопросы. Используется только при возникновении проблем или вопросов по особенностям обфускации кода программой.

Параметры для серверной версии

При использовании серверной версии программы появляется возможность использовать ряд специальных параметров.

-FILEJUNITWRITE=названиефайла
Файл для записи XML-отчета в формате JUnit. Пример: -FILEJUNITWRITE=c:\example\obf.xml
-AUTHOR=значение
Автор коммита, отчета, пр. по усмотрению пользователя. Пример: -AUTHOR=IvanPetrov
-BUILD=значение
Номер сборки(BUILD) на сервере сборки. Примечание: значение цифровое — 0..999999999. Пример: -BUILD=100
-REVISION=значение
Номер ревизии исходного кода из системы контроля версий. Примечание: значение цифровое — 0..999999999, по умолчанию равно 0. Пример: -REVISION=100
-VERSION=значение
Номер версии программы. Пример: -VERSION=1.0.5

Примеры

  • Выводит отчет по обфускации без изменения исходных файлов для двух файлов:
sourcelocalizer.exe -OBF=SIMPLE -OPENREPORT=OBFUSCATOR -SOURCEFILE=c:\example\module1.vb -SOURCEFILE=c:\example\module2.vb
  • Выводит отчет по обфускации без изменения исходных файлов для файлов в каталоге и двух файлов:
sourcelocalizer.exe -OBF=SIMPLE -OPENREPORT=OBFUSCATOR -SOURCEFILE=c:\example\module1.vb -SOURCEFILE=c:\example\module2.vb -SOURCEDIR=c:\dev\prog
  • Проводит обфускацию (изменяет файлы) трех файлов и файлов в каталоге без вывода отчета (обратите внимание на кавычки для указания пути к файлу содержащему пробелы):
sourcelocalizer.exe -OBF=SIMPLE -SOURCEWRITE -SOURCEFILE=c:\example\module1.vb -SOURCEFILE=c:\example\module2.vb -SOURCEFILE="c:\example of my prog\module1.vb" -SOURCEDIR=c:\dev\prog
  • Проводит обфускацию (изменяет файлы) двух файлов с сохранением HTML-отчета и JUnit-отчета в файлы:
sourcelocalizer.exe -OBF=SIMPLE -SOURCEWRITE -SOURCEFILE=c:\example\module1.vb -SOURCEFILE=c:\example\module2.vb -GENERATEREPORTHTMLTOFILE=OBFUSCATOR|c:\example\report.html -FILEJUNITWRITE=c:\example\obf.xml

11.2. Возможные ошибки обфускации и их исправление

В процессе обфускации программа производит поиск объявленных в коде переменных и замену их названий на обфусцированные.

Наиболее часто встречающиеся стандартные названия (name, value, tag,..) уже внесены в список игнорирования обфускацией.

Для скрытия переменных совпадающих со стандартными названиями (name, value, tag,..) их следует переименовать, например, в myname, name1 и пр.

Возможно совпадение названий с названиями из редких классов, например, функция getvaluefromfile может совпадать с функцией в подключаемом классе.

Для запрета обфускации таких названий следует воспользоваться файлом userobfuscateignore.lst в который необходимо внести названия запрещенных для обфускации переменных (каждое название с новой строки).

Сайт      PDF      Содержание