Общая информация
Термины и определения
Код доступа – уникальный идентификатор и набор паролей для встраивания в защищаемую программу, принадлежащий разработчику, использующему технологии Guardant.
Компонент – функциональная часть программы, которую необходимо лицензировать. Компонентами могут быть исполняемые файлы, модули, фрагменты программного кода, отдельно взятые функции или вся программа целиком.
Проект защиты – сущность утилиты, в которой хранятся настройки защиты программы или компонента пользователя.
Консольный интерфейс утилиты применяется в случаях, когда использование графического не представляется возможным, а также в случаях интеграции процесса защиты и привязки программы к лицензии с build-сервером.
Коды возврата
Коды возврата Guardant Protection Studio могут принимать одно из множества значений, соответствующих конкретной ошибке обфускации или защиты программы, либо значение 0 при успешном выполнении защиты. Предупреждения не кодируются в значении кода возврата. Подробные сведения о результате защиты нативных программ доступны в файле result.xml, генерируемом в выходной папке проекта.
Защита программы
Максимальный размер исполняемого файла, который можно защитить и привязать к лицензии с помощью Protection Studio, составляет 2 Гб.
Для работы в консольном интерфейсе необходимо запустить утилиту через командную строку (для ОС Windows) или терминал (для ОС Linux), указав необходимые опции.
Для защиты программы используется готовый Проект защиты, созданный ранее в графическом интерфейсе утилиты.
protection_studio.exe [опции] [путь_до_файла_проекта_защиты]
protection_studio [опции] [путь_до_файла_проекта_защиты]
Результатом успешной защиты программы является наличие следующих данных:
- сообщения Protection finished successfully! в командной строке или терминале;
- соответствующей динамической библиотеки в выходной директории;
- защищенной программы в выходной папке.
Опции
| Опция | Описание |
| Обязательные опции | |
--console | Использовать консольный интерфейс |
| Выборочные опции | |
--demo | Провести защиту в режиме тестирования утилиты (с тестовым кодом доступа) |
--force | Игнорировать ошибки (преобразовывать ошибки в предупреждения) |
--halt | Ожидание ввода данных от пользователя утилиты, применяется, если необходимо использовать отдельную консоль для защиты (например, при запуске из скрипта) |
--help | Показать подсказку |
--verbose | Показать дамп проекта защиты |
Пример команды:
protection_studio.exe --console --force --halt --verbose "C:\Users\Smith\Documents\Guardant Protection Studio\Project 1\Project 1.pprx" // для ОС Windows protection_studio --console --force --halt --verbose /home/Smith/Documents/Guardant\ Protection\ Studio/Project\ 1/Project\ 1.pprx // для ОС Linux
Опция --force позволяет игнорировать следующие ошибки:
- возможная перезапись файлов программ - есть возможность задать выходные папки файлов программ таким образом, что в результате защиты исходные файлы будут перетерты защищенными файлами;
- модификация защищаемого файла программы - в процессе модификации список функций или методов также мог измениться, поэтому ранее выбранные для защиты функции или методы могли исчезнуть;
- неожиданная структура подпапок - ожидается, что в проекте для всех файлов программ задаются выходные папки, находящиеся в выходной папке самого проекта;
- защита без привязок к компоненту - в проекте есть хотя бы один файл программы, для которого нет гарантий проверок лицензии (не касается файлов программ, к которым прилинкован Licensing API);
- частичное задание сообщений об ошибках - появляется, если изменяется несколько сообщений (можно ожидать, что либо сообщения не изменяются вовсе, либо изменяются все сообщения сразу).
Нюансы работы консольного интерфейса в Windows
Из-за особенностей реализации Guardant Protection Studio для операционных систем семейства Windows вызов консольного интерфейса должен осуществляться правильным образом.
Поскольку в Windows приложения четко разделяются на графические, консольные и иные, совместить в одном приложении оконный и текстовый интерфейс в общем случае невозможно. Так, наиболее очевидный вызов Guardant Protection Studio приводит к тому, что печать происходит в консоль, которая оказывается не связанной с приложением (независимой от приложения), а код возврата приложения перетирается консолью. Использовать приложение в таком режиме не просто неудобно, но и ненадежно, так как логика работы скриптов может оказаться нарушенной. По этой причине необходимо запускать Guardant Protection Studio, явно указывая в команде вызова, что необходимо дождаться завершения работы приложения.
Вызывать Guardant Protection Studio (x64) для защиты готового проекта в Командной строке и проверять код возврата рекомендуется подобным образом:
start /wait "Guardant Protection Studio" "%GUARDANT_SLK%\bin\x64\protection_studio.exe" --console "%USERPROFILE%\Documents\Guardant Protection Studio\Project 1\project.pprx" echo %ERRORLEVEL%
Вызывать Guardant Protection Studio (x64) для защиты готового проекта в оболочке PowerShell и проверять код возврата рекомендуется подобным образом:
$process = Start-Process -FilePath $env:GUARDANT_SLK\bin\x64\protection_studio.exe -Args --console,"`"$env:USERPROFILE\Documents\Guardant Protection Studio\Project 1\project.pprx`"" -Wait -PassThru $process.ExitCode