Защита файлов содержимого

Я хочу простой уровень защиты моих файлов контента (ресурсов) в моем приложении. Например, у меня есть различные звуковые и графические файлы, используемые в моем приложении. Я думаю, я могу обернуть их в архив SFX (возможно, упакованный с WinRAR), а затем в моем приложении запустить SFX exe с некоторыми параметрами, например, -silent. Но, возможно, это не лучший способ сделать это, поэтому, если вы можете дать мне несколько советов, это было бы здорово.

PS Я знаю, это не звучит недостижимо (как, например, есть), но это необходимо по ряду причин.

PS Я мог бы использовать некоторую справку для метода, чтобы скрыть файлы после полного извлечения SFX (или другого пакета).

Спасибо.

2 ответа

Решение

Не используйте архив SFX.

Ну, многое зависит от того, как вы используете свои ресурсы. Если у вас много библиотечного кода, для которого требуются имена файлов, то эти файлы необходимо некоторое время сохранять на жестком диске. Если вы можете, вы хотите выяснить, могут ли ваши звуковые и мультимедийные библиотеки передаваться по указателю, - тогда вы сами загружаете файлы, дешифруете их и передаете указатели на расшифрованные буферы в API медиа.

Что касается фактического шифрования. Либо используйте формат файла архива, что-то вроде zlib. Это дает вам возможность хранить все ваши файлы данных в одном зашифрованном архиве и расширять их в памяти.

Или сверните свое собственное шифрование файла. Преимущество XOR-шифрования в домашних условиях заключается в том, что оно очень быстрое.

Почти все шифрование файлов сводится к:

  • Начните с "ключа". Короткая строка.
  • Используйте ключ для инициализации генератора случайных чисел.
  • XOR байты из rng с данными, которые должны быть зашифрованы для его шифрования.
  • Позже для расшифровки данных:
  • начать с того же ключа, инициализировать Rng
  • Который будет генерировать тот же поток байтов,
  • XOR их с зашифрованными данными, чтобы расшифровать его.

Проблема (очевидно) в том, что ключ должен существовать в клиенте, чтобы любой решительный хакер мог его получить. Таким образом, здесь нет никакого смысла быть слишком модным здесь. Просто сгенерируйте 256 байтов "случайных" данных и используйте их для шифрования и дешифрования ваших файлов при загрузке их в память или для записи во временную папку.

Если вам нужно записать файлы ttemp, вы можете использовать FILE_FLAG_DELETE_ON_CLOSE, чтобы заставить временную папку безопасно себя очистить, не оставляя незашифрованных ресурсов на диске.

Заархивируйте ваши файлы ресурсов и затем XOR каждого 32-битного блока архивного файла с ключом, который вы выбираете. Во время выполнения XOR каждый входящий 32-битный блок с ключом снова перед передачей его в zip-библиотеку для декомпрессии в памяти.

Очень легкое запутывание, но оно должно помешать кому-либо просто открыть zip-файл.

Другие вопросы по тегам