LINUX.ORG.RU

Шифрование qrc ресурсов

 ,


1

2

У кого есть какие-либо работающие примеры, ссылки и т.д.? В ресурсах хранится artwork и QML код (много файлов), который могут «позаимствовать». Хотелось бы этого избежать, сделав защиту хотя бы от дурака. У RCC есть опция -compress, сжимающая контент, но этого, мягко говоря, маловато. UPX - хорошо, но не кроссплатформенно.

★★★★★

Последнее исправление: alex_custov (всего исправлений: 2)

В чем проблема хранить внутри бинаря уже запакованные и зашифрованные данные, которые распаковывать и расшифровывать перед запуском?

EXL ★★★★★
()

шифровать и расшифровывать перед использованием. только продумай как хранить ключ (не строкой же)

CrazyAlex25 ★★★
()
Ответ на: комментарий от alex_custov

У них же есть какой-то там QtQuick/QML-compiler. Заюзай его. Хотя он платный вроде.

EXL ★★★★★
()

Либо платишь овер 20 килорублей за три месяца коммерческой лицензии и получаешь компилятор — либо фактически выкладываешь в open source, да. Может быть это не так уж и плохо, я вот мечтаю о нормальной библиотеке QML компонентов, которую и пилю по мере сил.

CrossFire ★★★★★
()
Ответ на: комментарий от CrossFire

Upd: Сейчас я не вижу на сайте условия брать сразу на три месяца, есть триал на месяц, однако после истечения подписки по условиям пользоваться инструментами запрещено.

CrossFire ★★★★★
()

В Qt4 был QAbstractFileEngine, в Qt5 его отправили а приватные классы. Конкретно для QML шифрование должно решаться через свой QQmlNetworkAccessManagerFactory.

Dendy ★★★★★
()

А просто юридически оформить принадлежность артворка и пригрозить в лицензии ональными карами не вариант? Все, и ваши в том числе, потуги с шифрованием медий смешны и легко обходимы, навроде кина с DRM, только за кином стоят орды юристов, в этом их сила.

dr-yay ★★
()
Ответ на: комментарий от dr-yay

артворк - это не главная проблема. Главная - QML, который можно просто взять и скопировать прямо из экзешника, украв всю логику. Можно, конечно, вынести все алгоритмы в С++, но это отдельный проект на месяц.

alex_custov ★★★★★
() автор топика
Ответ на: комментарий от alex_custov

который можно просто взять и скопировать прямо из экзешника, украв всю логику

И что? Кто-то прям охотится за вашей бызныс-логикой чтоли? Там прям таки какое-то уникальное ноу-хау, недоступное смертному разуму? Ну используй тогда банальную обфускацию - без бутылки никто не поймёт как это дело прикрутить к своим разработкам.

no-such-file ★★★★★
()
Ответ на: комментарий от unC0Rr

Ещё вариант: посмотреть, во что компилится файл qrc - там просто массив. Перед компиляцией его шифровать, при запуске расшифровывать в памяти.

unC0Rr ★★★★★
()
Ответ на: комментарий от alex_custov

тогда предложу передавать результаты работы алгоритма со своего сервера, а не хранить код у клиента. Конечно, появится зависимость программы от интернета, но зато никто ничего не утянет из бездны онального рабства.

dr-yay ★★
()
Ответ на: комментарий от unC0Rr

qrc - это просто набор бинарных данных представленных в виде Си массивов. Данные зашифровать не проблема. Вопрос как их потом расшифровать и подсовывать загрузчику ресурсов.

alex_custov ★★★★★
() автор топика
Ответ на: комментарий от alex_custov

qrc - это просто набор бинарных данных представленных в виде Си массивов. Данные зашифровать не проблема. Вопрос как их потом расшифровать и подсовывать загрузчику ресурсов.

Это просто сишные массивы, которые регистрируются в системе при загрузке такими хаками:

int QT_MANGLE_NAMESPACE(qInitResources_images)()
{
    QT_PREPEND_NAMESPACE(qRegisterResourceData)
        (0x01, qt_resource_struct, qt_resource_name, qt_resource_data);
    return 1;
}

Q_CONSTRUCTOR_FUNCTION(QT_MANGLE_NAMESPACE(qInitResources_images))

Остаётся динамически расшифровать данные и так же их зарегистрироваться в системе. Только не статическим регистратором, как в qrc, а динамически.

Dendy ★★★★★
()
Ответ на: комментарий от Dendy

Кстати, удаление из файловой системы в qrc тоже предусмотрено, поскольку приложение может подгружать плагины, в которые могут вкомпилены свои qrc. Соответственно, вы при выгрузке плагина его файлы должны пропадать из файловой системы.

Dendy ★★★★★
()
Ответ на: комментарий от Dendy

Остаётся динамически расшифровать данные и так же их зарегистрироваться в системе. Только не статическим регистратором, как в qrc, а динамически.

это мысль, спасибо.

alex_custov ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.