- Файлы ресурсов Qt не поддерживают никакой степени защиты.
- даже если вы сжимаете файл ресурсов, извлечение данных из него по-прежнему довольно тривиально для любого человека со средним опытом.
- Файлы QML, хранящиеся в файловой системе, практически доступны для использования.
- то же самое относится и к любым удаленным файлам QML, кроме добавления зависимости от подключения к Интернету, их легко перехватить. доступ к сети и получение файлов QML через их URL-адреса.
- Похоже, что QML не предоставляет какого-либо общедоступного API, который позволил бы пользователям достаточно контролировать разрешение типов QML для защиты своего кода.
Поэтому в отсутствие какого-либо стандартного метода защиты источников QML единственное решение, которое в настоящее время приходит мне на ум, - это контроль над тем, как разрешаются типы QML. Существует несколько способов регистрации типов в QML:
- зарегистрироваться в исполняемом файле приложения
- зарегистрироваться в плагине
- зарегистрироваться через модуль QML
Это было бы легко, если бы использовался какой-либо пользовательский механизм создания экземпляров, но мне нужно, чтобы эти типы можно было использовать в обычных источниках QML. В идеале это должен быть первый механизм, используемый для разрешения типа, прежде чем просматривать доступные пути импорта или даже внутренне зарегистрированные типы.
В качестве альтернативы было бы так же полезно, если бы существовал способ полностью определить модуль QML на C++, без каких-либо внешних файлов QML, без файла qmldir и т. д.
В крайнем случае, если он не соответствует идеалу, я бы также согласился на регистрация типов QML (не C++) во время выполнения, это также может быть полезно, но я бы предпочел иметь полный контроль над процессом разрешения.
Плагин QML не справляется с этой задачей, поскольку он регистрирует типы C++, а я хочу зарегистрировать типы QML, то есть QQmlComponent, созданные из строковых источников и ссылающиеся друг на друга.
Подробнее здесь: https://stackoverflow.com/questions/348 ... plagiarism
Мобильная версия